@crewlethq/ui 0.35.1 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -1
- package/dist/AgentHandoffPanel/AgentHandoffPanel.d.ts +99 -0
- package/dist/AgentHandoffPanel/index.d.ts +3 -0
- package/dist/AgentHandoffPanel/index.js +16 -0
- package/dist/AgentHandoffPanel-JWSW62GU.css +151 -0
- package/dist/ArrangeFrame/index.js +1 -1
- package/dist/{ArrangeFrame-3PLZAG22.css → ArrangeFrame-QXOQTFAH.css} +22 -5
- package/dist/ArrangeList/index.js +4 -3
- package/dist/ArtifactAccess/ArtifactAccess.d.ts +40 -0
- package/dist/ArtifactAccess/index.d.ts +3 -0
- package/dist/ArtifactAccess/index.js +2 -0
- package/dist/ArtifactAccess-Y53ZTRFS.css +31 -0
- package/dist/ArtifactBar/ArtifactBar.d.ts +2 -1
- package/dist/ArtifactBar/index.js +2 -2
- package/dist/{ArtifactBar-HV5AT4RG.css → ArtifactBar-FWPBBKQ5.css} +8 -0
- package/dist/ArtifactCard/ArtifactCard.d.ts +1 -6
- package/dist/ArtifactCard/index.d.ts +2 -1
- package/dist/ArtifactCard/index.js +4 -3
- package/dist/ArtifactCover/index.js +3 -2
- package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +16 -7
- package/dist/ArtifactKindIllustration/index.js +1 -1
- package/dist/{ArtifactKindIllustration-5FPRJQ3P.css → ArtifactKindIllustration-KLFL7KBG.css} +37 -1
- package/dist/ArtifactMakeRow/ArtifactMakeRow.d.ts +39 -0
- package/dist/ArtifactMakeRow/index.d.ts +4 -0
- package/dist/ArtifactMakeRow/index.js +4 -0
- package/dist/ArtifactMakeRow-XBA2MPSY.css +167 -0
- package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +37 -0
- package/dist/ArtifactNameCell/index.d.ts +4 -0
- package/dist/ArtifactNameCell/index.js +4 -0
- package/dist/ArtifactNameCell-RTVP4LO4.css +104 -0
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +8 -1
- package/dist/ArtifactPanel/index.js +1 -1
- package/dist/{ArtifactPanel-HW3SU7CP.css → ArtifactPanel-KKUUIPEU.css} +9 -0
- package/dist/AuthLayout/index.js +2 -2
- package/dist/AvatarPicker/index.js +2 -2
- package/dist/Canvas/index.js +2 -2
- package/dist/CanvasBoard/CanvasBoard.d.ts +27 -13
- package/dist/CanvasBoard/index.d.ts +1 -1
- package/dist/CanvasBoard/index.js +4 -4
- package/dist/{CanvasBoard-5NNSKY6A.css → CanvasBoard-TS4P356F.css} +13 -6
- package/dist/CanvasToolbar/index.js +3 -3
- package/dist/Card/index.js +1 -1
- package/dist/{Card-KJOYHDTJ.css → Card-QOVASQNU.css} +17 -12
- package/dist/Checkbox/index.js +3 -2
- package/dist/ChoiceButtons/index.js +1 -1
- package/dist/{ChoiceButtons-DJ5EOGUA.css → ChoiceButtons-FLIFXFFS.css} +10 -0
- package/dist/ChoiceList/index.js +1 -1
- package/dist/{ChoiceList-RBL7FNQL.css → ChoiceList-EA2W6MOS.css} +36 -5
- package/dist/Combobox/index.js +3 -2
- package/dist/CommandPalette/index.js +3 -2
- package/dist/CommentThread/index.js +6 -5
- package/dist/Composer/Composer.d.ts +4 -0
- package/dist/Composer/index.js +3 -2
- package/dist/{Composer-ABGJIAIR.css → Composer-PXITWNEK.css} +26 -15
- package/dist/ConfirmField/index.js +3 -2
- package/dist/DataTable/index.js +4 -3
- package/dist/DataView/index.js +7 -6
- package/dist/DatasetSource/DatasetSource.d.ts +4 -0
- package/dist/DatasetSource/index.js +1 -1
- package/dist/{DatasetSource-XFPZBRXL.css → DatasetSource-SMGX4PS5.css} +38 -4
- package/dist/DateTimePicker/index.js +2 -1
- package/dist/{DateTimePicker-HG2KQXQ6.css → DateTimePicker-2IVTKFV2.css} +15 -2
- package/dist/DocTabsEditor/index.js +3 -2
- package/dist/Document/Document.d.ts +15 -3
- package/dist/Document/index.js +2 -1
- package/dist/{Document-JUGCSQ4L.css → Document-YFWTWXJP.css} +34 -2
- package/dist/{Editor-BVQHBF7L.js → Editor-HORWMUM3.js} +2 -1
- package/dist/FilterChip/index.js +1 -1
- package/dist/{FilterChip-EZ4QMW4E.css → FilterChip-VL33P3JL.css} +5 -1
- package/dist/Input/index.js +2 -1
- package/dist/{Input-GBZSFXLU.css → Input-ABGOFENS.css} +46 -10
- package/dist/LayersList/index.js +1 -1
- package/dist/{LayersList-NQZEIPZB.css → LayersList-TBNF4XGL.css} +16 -3
- package/dist/LinkInterstitial/index.js +2 -2
- package/dist/ListInput/index.js +3 -2
- package/dist/LivePreview/LivePreview.d.ts +120 -28
- package/dist/LivePreview/budget.d.ts +64 -20
- package/dist/LivePreview/index.d.ts +6 -4
- package/dist/LivePreview/index.js +1 -1
- package/dist/LivePreview/stills.d.ts +57 -0
- package/dist/LivePreview-BROGKR4N.css +113 -0
- package/dist/PresenterView/index.js +2 -2
- package/dist/PrincipalPicker/index.js +4 -3
- package/dist/RichEditor/index.js +1 -1
- package/dist/Select/index.js +2 -1
- package/dist/{Select-A54YS5EP.css → Select-W3CHTZXP.css} +18 -2
- package/dist/ShareDialog/index.js +3 -2
- package/dist/SheetColumnEditor/index.js +6 -5
- package/dist/SheetGrid/index.js +3 -3
- package/dist/SlideCompare/index.js +2 -2
- package/dist/SlideFilmstrip/index.js +2 -2
- package/dist/{SlideFilmstrip-4ITZLMO4.css → SlideFilmstrip-PAT7P4OG.css} +26 -7
- package/dist/SlideGrid/index.js +2 -2
- package/dist/{SlideGrid-S4LTJ4UU.css → SlideGrid-FJA33DV4.css} +11 -1
- package/dist/SlideStage/index.js +1 -1
- package/dist/{SlideStage-S2FISF4C.css → SlideStage-ZTTEQSS2.css} +4 -2
- package/dist/SourceEditor/index.js +2 -1
- package/dist/{SourceEditor-G2C3STPX.css → SourceEditor-QAYE2JS6.css} +19 -12
- package/dist/Switcher/index.js +4 -3
- package/dist/TagsInput/index.js +2 -1
- package/dist/{TagsInput-XMXTI5Q4.css → TagsInput-7EGBBXHS.css} +7 -1
- package/dist/ThemeGallery/index.js +1 -1
- package/dist/{ThemeGallery-HSUKBDWY.css → ThemeGallery-X35Y25EX.css} +26 -5
- package/dist/TimeWindowPicker/index.js +4 -3
- package/dist/{TimeWindowPicker-T763GLXH.css → TimeWindowPicker-DEFDV77Z.css} +15 -2
- package/dist/TreeCanvas/index.js +3 -3
- package/dist/VersionTimeline/index.js +2 -2
- package/dist/{chunk-V43UVX4H.js → chunk-27GD7LVR.js} +1 -1
- package/dist/{chunk-6JVRY5DQ.js → chunk-44WJLPQS.js} +2 -2
- package/dist/{chunk-ONL54WMH.js → chunk-46RL3E54.js} +1 -1
- package/dist/{chunk-UHJQDFKQ.js → chunk-4ZJLOKSS.js} +1 -1
- package/dist/{chunk-ACA27MZH.js → chunk-5QXRI35B.js} +1 -1
- package/dist/{chunk-LL5AFXU7.js → chunk-5RT5O4JR.js} +1 -1
- package/dist/{chunk-GMU6SQ6B.js → chunk-66NGUD5S.js} +2 -2
- package/dist/{chunk-3Y56GQPM.js → chunk-7VAUGG6B.js} +1 -1
- package/dist/{chunk-2CQLNML5.js → chunk-AOLCZDZ6.js} +3 -1
- package/dist/{chunk-NKZCJRKO.js → chunk-APDKUGSH.js} +2 -2
- package/dist/chunk-BGLKLXL3.js +29 -0
- package/dist/{chunk-Z6VW6CXX.js → chunk-BIQDJOJZ.js} +1 -1
- package/dist/{chunk-YSJC7AZC.js → chunk-BWOIUOO3.js} +1 -1
- package/dist/{chunk-PI7HKLIT.js → chunk-D7GNNID2.js} +3 -1
- package/dist/chunk-EAKC24BW.js +51 -0
- package/dist/{chunk-CCLNGVCM.js → chunk-EARDAJQY.js} +1 -1
- package/dist/chunk-EOQFPZEE.js +138 -0
- package/dist/{chunk-THROPJZC.js → chunk-F23N4MVU.js} +1 -1
- package/dist/{chunk-J6YZ4IYV.js → chunk-FG4O64DV.js} +3 -3
- package/dist/{chunk-E35CMI5D.js → chunk-FHHYXZSP.js} +31 -13
- package/dist/{chunk-AYB6AYNH.js → chunk-GMLAKNFY.js} +1 -1
- package/dist/{chunk-ZB5O3ELS.js → chunk-GRYZ5EP3.js} +4 -2
- package/dist/{chunk-QFNWMWWY.js → chunk-GS7ZTHPF.js} +4 -4
- package/dist/{chunk-ILAEBSLJ.js → chunk-H5NOLRGH.js} +2 -2
- package/dist/{chunk-W3UVOZKL.js → chunk-IPAU6FLH.js} +6 -2
- package/dist/{chunk-6QFAK2WV.js → chunk-IUYUS2SO.js} +4 -1
- package/dist/{chunk-22CQQDFW.js → chunk-JML75PGJ.js} +1 -1
- package/dist/{chunk-AXBRWRGV.js → chunk-JQLS3MZB.js} +1 -1
- package/dist/{chunk-FGYET26P.js → chunk-KJW2AS57.js} +1 -1
- package/dist/{chunk-QIXMNOBD.js → chunk-KYZMN6I6.js} +2 -2
- package/dist/{chunk-73A7D5CE.js → chunk-L4WZSVMT.js} +3 -1
- package/dist/{chunk-ULPL26BU.js → chunk-N5SKHIAP.js} +1 -1
- package/dist/{chunk-LV4APO72.js → chunk-NQGPD6NX.js} +1 -1
- package/dist/{chunk-7UYONN6K.js → chunk-OHA6WSAG.js} +6 -11
- package/dist/chunk-P5VGSVWG.js +39 -0
- package/dist/chunk-P6WFZDKS.js +111 -0
- package/dist/{chunk-CPEPST4S.js → chunk-PJIPUEJ3.js} +1 -1
- package/dist/{chunk-QS4ZGTEU.js → chunk-PPFX6GRK.js} +1 -1
- package/dist/{chunk-7DZDSSJS.js → chunk-RH2NCQBZ.js} +5 -4
- package/dist/{chunk-3VD3G3IL.js → chunk-T5RQGI6O.js} +1 -1
- package/dist/{chunk-F2KY4RLI.js → chunk-TVRBQMIX.js} +5 -3
- package/dist/{chunk-W7QBBKUE.js → chunk-UBZDYOCA.js} +7 -3
- package/dist/{chunk-QEFHYUCY.js → chunk-UWGUKMBK.js} +1 -1
- package/dist/{chunk-5YLON2PW.js → chunk-UYZZV4DZ.js} +1 -1
- package/dist/{chunk-BQ7AKL2N.js → chunk-VKKUGZ3G.js} +3 -1
- package/dist/{chunk-DEJHAOC5.js → chunk-WMXAX6VA.js} +1 -1
- package/dist/{chunk-VDPJGP4Q.js → chunk-WX2NIG4G.js} +1 -1
- package/dist/chunk-WYKWXRJ4.js +456 -0
- package/dist/{chunk-ZU3DUXD2.js → chunk-WZGYIVYH.js} +1 -1
- package/dist/{chunk-HUVG2FFT.js → chunk-Y5BD4MTE.js} +4 -2
- package/dist/chunk-YSGLEHND.js +56 -0
- package/dist/generated/index.d.ts +4 -0
- package/dist/generated/index.js +105 -100
- package/dist/index.js +105 -100
- package/dist/styles.css +1036 -163
- package/dist/utils/focusModality.d.ts +41 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -1
- package/package.json +3 -3
- package/dist/LivePreview-SRO7KHO4.css +0 -65
- package/dist/chunk-KF6YGL4B.js +0 -160
- package/dist/chunk-TYKQ33CL.js +0 -35
- package/dist/{chunk-3P4Y5RX6.js → chunk-4BYHAOHH.js} +1 -1
- package/dist/{chunk-KD2IRYCT.js → chunk-5WDXPHEW.js} +1 -1
- package/dist/{chunk-OSFA5ROT.js → chunk-FEJANUZK.js} +0 -0
- package/dist/{chunk-FJJHD73S.js → chunk-GYBDPCRC.js} +1 -1
- package/dist/{chunk-VHZ3AXJD.js → chunk-NQCY44B3.js} +1 -1
- package/dist/{chunk-3WCNHYXE.js → chunk-PNNYVN52.js} +0 -0
- package/dist/{chunk-FF5OZV77.js → chunk-W3HYWD63.js} +2 -2
package/dist/styles.css
CHANGED
|
@@ -548,6 +548,160 @@
|
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
|
|
551
|
+
/* AgentHandoffPanel-JWSW62GU.css */
|
|
552
|
+
/*
|
|
553
|
+
* Handing work to an agent, at the side of what is being made. The panel is
|
|
554
|
+
* an ArtifactPanel; this is its inside: the brief, its starters, the agent,
|
|
555
|
+
* what goes with it and the steps after, on one rhythm, and the commit in the
|
|
556
|
+
* panel's foot.
|
|
557
|
+
*
|
|
558
|
+
* ONE STEP BETWEEN SECTIONS (spacing-6) and one inside them (spacing-2): the
|
|
559
|
+
* brief and its helper read as one block, the next question as the next.
|
|
560
|
+
*/
|
|
561
|
+
|
|
562
|
+
.crewlet-agent-handoff__body {
|
|
563
|
+
display: flex;
|
|
564
|
+
flex-direction: column;
|
|
565
|
+
gap: var(--spacing-6);
|
|
566
|
+
min-width: 0;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
.crewlet-agent-handoff__intro {
|
|
570
|
+
margin: 0;
|
|
571
|
+
color: var(--color-text-secondary);
|
|
572
|
+
font-size: var(--font-size-sm);
|
|
573
|
+
line-height: var(--font-line-height-normal);
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.crewlet-agent-handoff__brief {
|
|
577
|
+
display: flex;
|
|
578
|
+
flex-direction: column;
|
|
579
|
+
gap: var(--spacing-2);
|
|
580
|
+
min-width: 0;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/* THE BRIEF'S NAME is a section's name, at a section heading's size, since
|
|
584
|
+
it heads the panel's first question. */
|
|
585
|
+
.crewlet-agent-handoff__label {
|
|
586
|
+
color: var(--color-text-primary);
|
|
587
|
+
font-size: var(--font-size-sm);
|
|
588
|
+
font-weight: var(--font-weight-semibold);
|
|
589
|
+
line-height: var(--font-line-height-snug);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.crewlet-agent-handoff__helper {
|
|
593
|
+
margin: 0;
|
|
594
|
+
color: var(--color-text-tertiary);
|
|
595
|
+
font-size: var(--font-size-xs);
|
|
596
|
+
line-height: var(--font-line-height-normal);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
.crewlet-agent-handoff__starters {
|
|
600
|
+
display: flex;
|
|
601
|
+
flex-wrap: wrap;
|
|
602
|
+
gap: var(--spacing-2);
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
.crewlet-agent-handoff__section {
|
|
606
|
+
min-width: 0;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.crewlet-agent-handoff__carried {
|
|
610
|
+
display: flex;
|
|
611
|
+
flex-direction: column;
|
|
612
|
+
gap: var(--spacing-1);
|
|
613
|
+
margin: 0 0 var(--spacing-2);
|
|
614
|
+
padding: 0;
|
|
615
|
+
list-style: none;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
.crewlet-agent-handoff__item {
|
|
619
|
+
display: flex;
|
|
620
|
+
align-items: flex-start;
|
|
621
|
+
gap: var(--spacing-2);
|
|
622
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
623
|
+
border-radius: var(--radius-md);
|
|
624
|
+
background: var(--color-surface-subtle);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.crewlet-agent-handoff__item-icon {
|
|
628
|
+
display: inline-flex;
|
|
629
|
+
flex: none;
|
|
630
|
+
/* On the first line's centre, whatever the glyph's own box. */
|
|
631
|
+
margin-top: 1px;
|
|
632
|
+
color: var(--color-text-tertiary);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
.crewlet-agent-handoff__item-words {
|
|
636
|
+
display: flex;
|
|
637
|
+
flex-direction: column;
|
|
638
|
+
gap: 2px;
|
|
639
|
+
min-width: 0;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
.crewlet-agent-handoff__item-label {
|
|
643
|
+
overflow-wrap: anywhere;
|
|
644
|
+
color: var(--color-text-primary);
|
|
645
|
+
font-size: var(--font-size-sm);
|
|
646
|
+
line-height: var(--font-line-height-snug);
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
.crewlet-agent-handoff__item-detail {
|
|
650
|
+
overflow-wrap: anywhere;
|
|
651
|
+
color: var(--color-text-tertiary);
|
|
652
|
+
font-size: var(--font-size-xs);
|
|
653
|
+
line-height: var(--font-line-height-normal);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.crewlet-agent-handoff__task {
|
|
657
|
+
display: flex;
|
|
658
|
+
flex-direction: column;
|
|
659
|
+
gap: var(--spacing-2);
|
|
660
|
+
padding-top: var(--spacing-2);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
.crewlet-agent-handoff__task-title {
|
|
664
|
+
margin: 0;
|
|
665
|
+
color: var(--color-text-primary);
|
|
666
|
+
font-size: var(--font-size-sm);
|
|
667
|
+
font-weight: var(--font-weight-medium);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
/* THE BODY AS SENT, wrapped rather than scrolled sideways: a reader checks it
|
|
671
|
+
line by line, and a panel's width is narrower than its longest line. */
|
|
672
|
+
.crewlet-agent-handoff__task-body {
|
|
673
|
+
max-height: 16rem;
|
|
674
|
+
margin: 0;
|
|
675
|
+
overflow: auto;
|
|
676
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
677
|
+
border-radius: var(--radius-md);
|
|
678
|
+
background: var(--color-surface-inset);
|
|
679
|
+
color: var(--color-text-secondary);
|
|
680
|
+
font-family: var(--font-family-mono);
|
|
681
|
+
font-size: var(--font-size-xs);
|
|
682
|
+
line-height: var(--font-line-height-normal);
|
|
683
|
+
white-space: pre-wrap;
|
|
684
|
+
overflow-wrap: anywhere;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
.crewlet-agent-handoff__foot {
|
|
688
|
+
display: flex;
|
|
689
|
+
flex-direction: column;
|
|
690
|
+
gap: var(--spacing-2);
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
.crewlet-agent-handoff__media {
|
|
694
|
+
display: inline-flex;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
.crewlet-agent-handoff__reason {
|
|
698
|
+
margin: 0;
|
|
699
|
+
color: var(--color-text-tertiary);
|
|
700
|
+
font-size: var(--font-size-xs);
|
|
701
|
+
line-height: var(--font-line-height-normal);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
|
|
551
705
|
/* AppShell-JTSEOA57.css */
|
|
552
706
|
/*
|
|
553
707
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
@@ -1377,7 +1531,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1377
1531
|
}
|
|
1378
1532
|
|
|
1379
1533
|
|
|
1380
|
-
/* ArrangeFrame-
|
|
1534
|
+
/* ArrangeFrame-QXOQTFAH.css */
|
|
1381
1535
|
/*
|
|
1382
1536
|
* ArrangeFrame: a block of a page being arranged.
|
|
1383
1537
|
*
|
|
@@ -1439,9 +1593,8 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1439
1593
|
|
|
1440
1594
|
/*
|
|
1441
1595
|
* THE ONE RING, over the block's own edge, on the innermost block the
|
|
1442
|
-
* pointer or the focus is in.
|
|
1443
|
-
*
|
|
1444
|
-
* line appearing around it.
|
|
1596
|
+
* pointer or the focus is in. Drawn exactly over the block's own 1px border,
|
|
1597
|
+
* so the border changes colour rather than a second line appearing around it.
|
|
1445
1598
|
*
|
|
1446
1599
|
* IT IS A LAYER OF ITS OWN, above the content. An outline is painted with the
|
|
1447
1600
|
* block, under any content that is positioned or scrolls (a card with a fixed
|
|
@@ -1458,14 +1611,32 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1458
1611
|
border-radius: inherit;
|
|
1459
1612
|
pointer-events: none;
|
|
1460
1613
|
}
|
|
1461
|
-
|
|
1614
|
+
/*
|
|
1615
|
+
* THREE STRENGTHS ON THE ONE LAYER. The innermost block under the pointer, or
|
|
1616
|
+
* holding the focus in one of its fields, takes the selected edge, the accent
|
|
1617
|
+
* mixed toward the page: it says where the reader is working, and in the full
|
|
1618
|
+
* accent a caret in a cell's field drew a frame in the focus ring's own hue
|
|
1619
|
+
* round the whole block. The block ITSELF in keyboard focus takes the focus
|
|
1620
|
+
* ring, two pixels in the focus colour, the area a keyboard indicator needs.
|
|
1621
|
+
* A picked or resizing block takes one crisp pixel of the full accent, as a
|
|
1622
|
+
* picked board on a canvas does, its handles saying the rest.
|
|
1623
|
+
*/
|
|
1624
|
+
.crewlet-arrange-frame.is-editing:is(:hover, :has(:focus-visible)):not(:focus-visible, .is-selected, .is-resizing):not(
|
|
1462
1625
|
:has(.crewlet-arrange-frame:is(:hover, :focus-visible, :has(:focus-visible)))
|
|
1463
|
-
)::after
|
|
1626
|
+
)::after {
|
|
1627
|
+
border-color: var(--color-border-selected);
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1464
1630
|
.crewlet-arrange-frame.is-selected::after,
|
|
1465
1631
|
.crewlet-arrange-frame.is-resizing::after {
|
|
1466
1632
|
border-color: var(--color-brand-accent);
|
|
1467
1633
|
}
|
|
1468
1634
|
|
|
1635
|
+
.crewlet-arrange-frame.is-editing:focus-visible::after {
|
|
1636
|
+
border-width: 2px;
|
|
1637
|
+
border-color: var(--color-focus);
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1469
1640
|
/* A block with no surface of its own takes its ring a step outside it. */
|
|
1470
1641
|
.crewlet-arrange-frame.is-bare {
|
|
1471
1642
|
--crewlet-arrange-frame-radius: var(--radius-md);
|
|
@@ -2041,7 +2212,41 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2041
2212
|
}
|
|
2042
2213
|
|
|
2043
2214
|
|
|
2044
|
-
/*
|
|
2215
|
+
/* ArtifactAccess-Y53ZTRFS.css */
|
|
2216
|
+
/*
|
|
2217
|
+
* An artifact's access as a glyph and its word. No colour of its own: the
|
|
2218
|
+
* glyph is the tertiary step and the word the secondary, one step stronger
|
|
2219
|
+
* where others can open it.
|
|
2220
|
+
*/
|
|
2221
|
+
|
|
2222
|
+
.crewlet-artifact-access {
|
|
2223
|
+
display: inline-flex;
|
|
2224
|
+
align-items: center;
|
|
2225
|
+
gap: calc(var(--spacing-1) * 1.5);
|
|
2226
|
+
min-width: 0;
|
|
2227
|
+
max-width: 100%;
|
|
2228
|
+
color: var(--color-text-tertiary);
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
.crewlet-artifact-access__glyph {
|
|
2232
|
+
display: inline-flex;
|
|
2233
|
+
flex: none;
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
.crewlet-artifact-access__word {
|
|
2237
|
+
min-width: 0;
|
|
2238
|
+
overflow: hidden;
|
|
2239
|
+
text-overflow: ellipsis;
|
|
2240
|
+
white-space: nowrap;
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
.crewlet-artifact-access--shared,
|
|
2244
|
+
.crewlet-artifact-access--company {
|
|
2245
|
+
color: var(--color-text-secondary);
|
|
2246
|
+
}
|
|
2247
|
+
|
|
2248
|
+
|
|
2249
|
+
/* ArtifactBar-FWPBBKQ5.css */
|
|
2045
2250
|
/*
|
|
2046
2251
|
* One row, one hairline under it, the height of a large row. The lead (the
|
|
2047
2252
|
* way back, the glyph, the title, the version) takes what the end leaves it
|
|
@@ -2242,11 +2447,19 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2242
2447
|
margin-inline-start: var(--spacing-1);
|
|
2243
2448
|
}
|
|
2244
2449
|
|
|
2450
|
+
/* THE STATUS IS QUIET by default, in the bar's small step and the secondary
|
|
2451
|
+
ink that `EditingStatus` takes, so a host that hands it words ("Creating…",
|
|
2452
|
+
"25 words") draws them as the open artifact draws its own, never at the
|
|
2453
|
+
title's weight. Its figures are tabular, so a count does not jitter. */
|
|
2245
2454
|
.crewlet-artifact-bar__status {
|
|
2246
2455
|
display: inline-flex;
|
|
2247
2456
|
align-items: center;
|
|
2248
2457
|
min-width: 0;
|
|
2249
2458
|
margin-inline-end: var(--spacing-2);
|
|
2459
|
+
color: var(--color-text-secondary);
|
|
2460
|
+
font-size: var(--font-size-compact);
|
|
2461
|
+
font-variant-numeric: tabular-nums;
|
|
2462
|
+
white-space: nowrap;
|
|
2250
2463
|
}
|
|
2251
2464
|
|
|
2252
2465
|
.crewlet-artifact-bar__presence {
|
|
@@ -2812,9 +3025,9 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2812
3025
|
}
|
|
2813
3026
|
|
|
2814
3027
|
|
|
2815
|
-
/* ArtifactKindIllustration-
|
|
3028
|
+
/* ArtifactKindIllustration-KLFL7KBG.css */
|
|
2816
3029
|
/*
|
|
2817
|
-
* A kind's drawing, its tinted ground and the
|
|
3030
|
+
* A kind's drawing, its tinted ground and the "Start a new artifact" tile.
|
|
2818
3031
|
*
|
|
2819
3032
|
* Every colour is the kind's token, `--color-artifact-kind-<kind>` and its
|
|
2820
3033
|
* Fill and Line steps, set once per kind on `--crewlet-kind-*`
|
|
@@ -3004,53 +3217,366 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
3004
3217
|
white-space: nowrap;
|
|
3005
3218
|
}
|
|
3006
3219
|
|
|
3007
|
-
/* HOVER IS THE FRAME'S STEP ALONE: the drawing inside stays still, as a
|
|
3008
|
-
card's preview does, so a row of tiles never ripples under the pointer. */
|
|
3009
|
-
a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
3010
|
-
.crewlet-kind-tile--button:hover .crewlet-kind-tile__frame {
|
|
3011
|
-
border-color: var(--color-border-hover);
|
|
3220
|
+
/* HOVER IS THE FRAME'S STEP ALONE: the drawing inside stays still, as a
|
|
3221
|
+
card's preview does, so a row of tiles never ripples under the pointer. */
|
|
3222
|
+
a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
3223
|
+
.crewlet-kind-tile--button:hover .crewlet-kind-tile__frame {
|
|
3224
|
+
border-color: var(--color-border-hover);
|
|
3225
|
+
}
|
|
3226
|
+
|
|
3227
|
+
.crewlet-kind-tile:focus-visible .crewlet-kind-tile__frame {
|
|
3228
|
+
outline: 2px solid var(--color-focus);
|
|
3229
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
3230
|
+
}
|
|
3231
|
+
|
|
3232
|
+
/*
|
|
3233
|
+
* A TILE THAT STARTS SOMETHING IN PLACE (a create page's starting layouts)
|
|
3234
|
+
* DRAWS ONE EDGE. Its face is a picture of the layout, with boards of its
|
|
3235
|
+
* own, so the ground's tinted inner line was a second outline a few pixels
|
|
3236
|
+
* inside the frame's, and with the focus ring over the frame the tile read as
|
|
3237
|
+
* three nested rings. The frame is the tile's one edge; the ground keeps its
|
|
3238
|
+
* tint.
|
|
3239
|
+
*/
|
|
3240
|
+
.crewlet-kind-tile--button .crewlet-kind-tile__ground {
|
|
3241
|
+
box-shadow: none;
|
|
3242
|
+
}
|
|
3243
|
+
|
|
3244
|
+
/*
|
|
3245
|
+
* CHOSEN, as every chosen option is drawn: the selected edge (the accent
|
|
3246
|
+
* mixed toward the page) on the frame, over the selected fill, and a check
|
|
3247
|
+
* beside the name, the mark that clears 3:1. Under the pointer it keeps its
|
|
3248
|
+
* edge, and the focus ring is drawn over it for the keyboard alone.
|
|
3249
|
+
*/
|
|
3250
|
+
.crewlet-kind-tile--button.is-selected .crewlet-kind-tile__frame,
|
|
3251
|
+
.crewlet-kind-tile--button.is-selected:hover .crewlet-kind-tile__frame {
|
|
3252
|
+
border-color: var(--color-border-selected);
|
|
3253
|
+
background-image: linear-gradient(var(--color-surface-selected), var(--color-surface-selected));
|
|
3254
|
+
}
|
|
3255
|
+
|
|
3256
|
+
.crewlet-kind-tile__check {
|
|
3257
|
+
flex: none;
|
|
3258
|
+
margin-inline-start: auto;
|
|
3259
|
+
color: var(--color-brand-accent-ink);
|
|
3260
|
+
}
|
|
3261
|
+
|
|
3262
|
+
@media (forced-colors: active) {
|
|
3263
|
+
.crewlet-kind-tile--button.is-selected .crewlet-kind-tile__frame {
|
|
3264
|
+
border-color: Highlight;
|
|
3265
|
+
}
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3268
|
+
.crewlet-kind-tile--disabled {
|
|
3269
|
+
cursor: not-allowed;
|
|
3270
|
+
}
|
|
3271
|
+
|
|
3272
|
+
.crewlet-kind-tile--disabled .crewlet-kind-tile__ground,
|
|
3273
|
+
.crewlet-kind-tile--disabled .crewlet-kind-tile__name {
|
|
3274
|
+
opacity: 0.55;
|
|
3275
|
+
}
|
|
3276
|
+
|
|
3277
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3278
|
+
.crewlet-kind-tile__frame {
|
|
3279
|
+
transition: none;
|
|
3280
|
+
}
|
|
3281
|
+
}
|
|
3282
|
+
|
|
3283
|
+
|
|
3284
|
+
/* ArtifactKinds-CVD3FCYO.css */
|
|
3285
|
+
/*
|
|
3286
|
+
* A kind's colours, set once per kind on `--crewlet-kind-*` by its class
|
|
3287
|
+
* (`crewlet-kind--<kind>`): the hue, its Fill and Line steps and the ink a
|
|
3288
|
+
* glyph is drawn in. Every surface that tints by kind reads these, so a kind
|
|
3289
|
+
* glyph in a bar, a card's badge and a Make row's tile repaint together with
|
|
3290
|
+
* the theme, and no surface spells a kind's colour of its own. A sheet of
|
|
3291
|
+
* its own, imported by each surface that tints, because the glyph's module
|
|
3292
|
+
* carries no stylesheet (a frame that draws one glyph takes nothing else).
|
|
3293
|
+
*/
|
|
3294
|
+
.crewlet-kind--doc { --crewlet-kind-hue: var(--color-artifact-kind-doc); --crewlet-kind-fill: var(--color-artifact-kind-doc-fill); --crewlet-kind-line: var(--color-artifact-kind-doc-line); --crewlet-kind-ink: var(--color-artifact-kind-doc-ink); }
|
|
3295
|
+
.crewlet-kind--slides { --crewlet-kind-hue: var(--color-artifact-kind-slides); --crewlet-kind-fill: var(--color-artifact-kind-slides-fill); --crewlet-kind-line: var(--color-artifact-kind-slides-line); --crewlet-kind-ink: var(--color-artifact-kind-slides-ink); }
|
|
3296
|
+
.crewlet-kind--design { --crewlet-kind-hue: var(--color-artifact-kind-design); --crewlet-kind-fill: var(--color-artifact-kind-design-fill); --crewlet-kind-line: var(--color-artifact-kind-design-line); --crewlet-kind-ink: var(--color-artifact-kind-design-ink); }
|
|
3297
|
+
.crewlet-kind--dashboard { --crewlet-kind-hue: var(--color-artifact-kind-dashboard); --crewlet-kind-fill: var(--color-artifact-kind-dashboard-fill); --crewlet-kind-line: var(--color-artifact-kind-dashboard-line); --crewlet-kind-ink: var(--color-artifact-kind-dashboard-ink); }
|
|
3298
|
+
.crewlet-kind--html { --crewlet-kind-hue: var(--color-artifact-kind-html); --crewlet-kind-fill: var(--color-artifact-kind-html-fill); --crewlet-kind-line: var(--color-artifact-kind-html-line); --crewlet-kind-ink: var(--color-artifact-kind-html-ink); }
|
|
3299
|
+
.crewlet-kind--sheet { --crewlet-kind-hue: var(--color-artifact-kind-sheet); --crewlet-kind-fill: var(--color-artifact-kind-sheet-fill); --crewlet-kind-line: var(--color-artifact-kind-sheet-line); --crewlet-kind-ink: var(--color-artifact-kind-sheet-ink); }
|
|
3300
|
+
|
|
3301
|
+
|
|
3302
|
+
/* ArtifactMakeRow-XBA2MPSY.css */
|
|
3303
|
+
/*
|
|
3304
|
+
* The "Start a new artifact" tray.
|
|
3305
|
+
*
|
|
3306
|
+
* Every colour is a token: the tray's ground, its dots and its hairlines are
|
|
3307
|
+
* the surface and border steps, and each kind's mark reads the kind's own
|
|
3308
|
+
* Fill, Line and Ink (`ArtifactKinds.css`), so the tray repaints with the
|
|
3309
|
+
* theme and holds no colour of its own.
|
|
3310
|
+
*
|
|
3311
|
+
* THE TRAY SIZES ITSELF BY ITS OWN WIDTH, never the window's: it sits in a
|
|
3312
|
+
* page column a sidebar narrows, so three steps are container queries on the
|
|
3313
|
+
* tray. Under 560px three across in two lines; from 560px the six in one
|
|
3314
|
+
* line, each its mark over its name, so a long name is never cut; from 920px
|
|
3315
|
+
* the mark beside the name and what the kind is for under it.
|
|
3316
|
+
*/
|
|
3317
|
+
|
|
3318
|
+
.crewlet-make-row {
|
|
3319
|
+
container-type: inline-size;
|
|
3320
|
+
/* A WORKBENCH: the canvas's dotted field on the sheet itself, one step
|
|
3321
|
+
quieter than a canvas that pans, inside a hairline ring. */
|
|
3322
|
+
border: 1px solid var(--color-border-default);
|
|
3323
|
+
border-radius: var(--radius-lg);
|
|
3324
|
+
background-color: var(--color-surface-background);
|
|
3325
|
+
background-image: radial-gradient(var(--color-border-default) 1px, transparent 1.2px);
|
|
3326
|
+
background-size: var(--spacing-4) var(--spacing-4);
|
|
3327
|
+
background-position: calc(var(--spacing-4) / 2) calc(var(--spacing-4) / 2);
|
|
3328
|
+
}
|
|
3329
|
+
|
|
3330
|
+
.crewlet-make-row__list {
|
|
3331
|
+
display: grid;
|
|
3332
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
3333
|
+
gap: var(--spacing-1);
|
|
3334
|
+
margin: 0;
|
|
3335
|
+
padding: var(--spacing-1);
|
|
3336
|
+
list-style: none;
|
|
3337
|
+
}
|
|
3338
|
+
|
|
3339
|
+
.crewlet-make-row__cell {
|
|
3340
|
+
display: flex;
|
|
3341
|
+
min-width: 0;
|
|
3342
|
+
}
|
|
3343
|
+
|
|
3344
|
+
.crewlet-make-row__item {
|
|
3345
|
+
display: flex;
|
|
3346
|
+
flex: 1;
|
|
3347
|
+
flex-direction: column;
|
|
3348
|
+
align-items: center;
|
|
3349
|
+
gap: var(--spacing-2);
|
|
3350
|
+
min-width: 0;
|
|
3351
|
+
box-sizing: border-box;
|
|
3352
|
+
padding: var(--spacing-3) var(--spacing-2);
|
|
3353
|
+
border: 1px solid transparent;
|
|
3354
|
+
border-radius: var(--radius-md);
|
|
3355
|
+
color: var(--color-text-primary);
|
|
3356
|
+
text-decoration: none;
|
|
3357
|
+
outline: none;
|
|
3358
|
+
transition:
|
|
3359
|
+
background-color var(--motion-duration-fast) var(--motion-easing-out),
|
|
3360
|
+
border-color var(--motion-duration-fast) var(--motion-easing-out),
|
|
3361
|
+
box-shadow var(--motion-duration-fast) var(--motion-easing-out);
|
|
3362
|
+
}
|
|
3363
|
+
|
|
3364
|
+
/* THE GLYPH ON ITS KIND'S TINT, the one coloured thing in the item. */
|
|
3365
|
+
.crewlet-make-row__mark {
|
|
3366
|
+
display: inline-flex;
|
|
3367
|
+
flex: none;
|
|
3368
|
+
align-items: center;
|
|
3369
|
+
justify-content: center;
|
|
3370
|
+
width: 32px;
|
|
3371
|
+
height: 32px;
|
|
3372
|
+
border-radius: var(--radius-md);
|
|
3373
|
+
background: var(--crewlet-kind-fill);
|
|
3374
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-line);
|
|
3375
|
+
color: var(--crewlet-kind-ink);
|
|
3376
|
+
}
|
|
3377
|
+
|
|
3378
|
+
.crewlet-make-row__words {
|
|
3379
|
+
display: flex;
|
|
3380
|
+
flex-direction: column;
|
|
3381
|
+
align-items: center;
|
|
3382
|
+
min-width: 0;
|
|
3383
|
+
max-width: 100%;
|
|
3384
|
+
}
|
|
3385
|
+
|
|
3386
|
+
.crewlet-make-row__name,
|
|
3387
|
+
.crewlet-make-row__detail {
|
|
3388
|
+
max-width: 100%;
|
|
3389
|
+
overflow: hidden;
|
|
3390
|
+
text-overflow: ellipsis;
|
|
3391
|
+
white-space: nowrap;
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3394
|
+
.crewlet-make-row__name {
|
|
3395
|
+
font-size: var(--font-size-sm);
|
|
3396
|
+
font-weight: var(--font-weight-medium);
|
|
3397
|
+
line-height: 1.3;
|
|
3398
|
+
}
|
|
3399
|
+
|
|
3400
|
+
/* WHAT IT IS FOR is the widest step's: on a narrower tray the name alone
|
|
3401
|
+
says it, and the details are kept as the item's description. */
|
|
3402
|
+
.crewlet-make-row__detail {
|
|
3403
|
+
display: none;
|
|
3404
|
+
color: var(--color-text-tertiary);
|
|
3405
|
+
font-size: var(--font-size-xs);
|
|
3406
|
+
line-height: 1.35;
|
|
3407
|
+
}
|
|
3408
|
+
|
|
3409
|
+
@container (width >= 560px) {
|
|
3410
|
+
.crewlet-make-row__list {
|
|
3411
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
3412
|
+
}
|
|
3413
|
+
|
|
3414
|
+
.crewlet-make-row__item {
|
|
3415
|
+
padding: var(--spacing-2) var(--spacing-1);
|
|
3416
|
+
}
|
|
3417
|
+
}
|
|
3418
|
+
|
|
3419
|
+
@container (width >= 920px) {
|
|
3420
|
+
.crewlet-make-row__item {
|
|
3421
|
+
flex-direction: row;
|
|
3422
|
+
gap: var(--spacing-3);
|
|
3423
|
+
padding: var(--spacing-2);
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3426
|
+
.crewlet-make-row__words {
|
|
3427
|
+
align-items: flex-start;
|
|
3428
|
+
}
|
|
3429
|
+
|
|
3430
|
+
.crewlet-make-row__detail {
|
|
3431
|
+
display: block;
|
|
3432
|
+
}
|
|
3433
|
+
}
|
|
3434
|
+
|
|
3435
|
+
/* AN ITEM LIFTS OFF THE BENCH under the pointer as a card: the card's
|
|
3436
|
+
ground, the hairline a card is found by and the lightest shadow, and
|
|
3437
|
+
nothing inside it moves. */
|
|
3438
|
+
a.crewlet-make-row__item:hover {
|
|
3439
|
+
border-color: var(--color-border-default);
|
|
3440
|
+
background-color: var(--color-surface-subtle);
|
|
3441
|
+
box-shadow: var(--shadow-xs);
|
|
3442
|
+
}
|
|
3443
|
+
|
|
3444
|
+
a.crewlet-make-row__item:active {
|
|
3445
|
+
background-color: var(--color-surface-pressed);
|
|
3446
|
+
box-shadow: none;
|
|
3447
|
+
}
|
|
3448
|
+
|
|
3449
|
+
/* ON ITS OWN EDGE: an item draws a hairline once lifted, so the ring sits on
|
|
3450
|
+
it rather than standing off it with a gap between two edges. */
|
|
3451
|
+
.crewlet-make-row__item:focus-visible {
|
|
3452
|
+
outline: 2px solid var(--color-focus);
|
|
3453
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
3454
|
+
}
|
|
3455
|
+
|
|
3456
|
+
.crewlet-make-row__item--disabled {
|
|
3457
|
+
cursor: not-allowed;
|
|
3458
|
+
}
|
|
3459
|
+
|
|
3460
|
+
.crewlet-make-row__item--disabled .crewlet-make-row__mark,
|
|
3461
|
+
.crewlet-make-row__item--disabled .crewlet-make-row__words {
|
|
3462
|
+
opacity: 0.55;
|
|
3463
|
+
}
|
|
3464
|
+
|
|
3465
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3466
|
+
.crewlet-make-row__item {
|
|
3467
|
+
transition: none;
|
|
3468
|
+
}
|
|
3469
|
+
}
|
|
3470
|
+
|
|
3471
|
+
|
|
3472
|
+
/* ArtifactNameCell-RTVP4LO4.css */
|
|
3473
|
+
/*
|
|
3474
|
+
* An artifact's name in a list: the kind's mark on its tint, the title over
|
|
3475
|
+
* one quiet line. Every colour is a token: the mark reads the kind's own Fill,
|
|
3476
|
+
* Line and Ink (`ArtifactKinds.css`), the words the text steps.
|
|
3477
|
+
*/
|
|
3478
|
+
|
|
3479
|
+
.crewlet-artifact-name {
|
|
3480
|
+
display: flex;
|
|
3481
|
+
align-items: center;
|
|
3482
|
+
gap: var(--spacing-3);
|
|
3483
|
+
min-width: 0;
|
|
3484
|
+
max-width: 100%;
|
|
3485
|
+
padding-block: var(--spacing-1);
|
|
3486
|
+
}
|
|
3487
|
+
|
|
3488
|
+
/* THE MARK, the Make row's tile at a list's size: the kind's glyph on its
|
|
3489
|
+
tint inside the kind's hairline. */
|
|
3490
|
+
.crewlet-artifact-name__mark {
|
|
3491
|
+
display: inline-flex;
|
|
3492
|
+
flex: none;
|
|
3493
|
+
align-items: center;
|
|
3494
|
+
justify-content: center;
|
|
3495
|
+
width: 32px;
|
|
3496
|
+
height: 32px;
|
|
3497
|
+
box-sizing: border-box;
|
|
3498
|
+
border-radius: var(--radius-md);
|
|
3499
|
+
background: var(--crewlet-kind-fill);
|
|
3500
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-line);
|
|
3501
|
+
color: var(--crewlet-kind-ink);
|
|
3502
|
+
transition: box-shadow var(--motion-duration-fast) var(--motion-easing-out);
|
|
3503
|
+
}
|
|
3504
|
+
|
|
3505
|
+
/* UNDER THE POINTER the row's ground moves (the row's own hover), and the
|
|
3506
|
+
mark's hairline takes the kind's hue, so the one coloured thing on the row
|
|
3507
|
+
answers too. No lift and no movement: a list is read down, not played. */
|
|
3508
|
+
:is(tr, [role='row']):hover .crewlet-artifact-name__mark {
|
|
3509
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-hue);
|
|
3510
|
+
}
|
|
3511
|
+
|
|
3512
|
+
.crewlet-artifact-name--trashed .crewlet-artifact-name__mark {
|
|
3513
|
+
background: var(--color-surface-inset);
|
|
3514
|
+
box-shadow: inset 0 0 0 1px var(--color-border-default);
|
|
3515
|
+
color: var(--color-text-tertiary);
|
|
3516
|
+
}
|
|
3517
|
+
|
|
3518
|
+
.crewlet-artifact-name__words {
|
|
3519
|
+
display: flex;
|
|
3520
|
+
flex-direction: column;
|
|
3521
|
+
gap: 2px;
|
|
3522
|
+
min-width: 0;
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3525
|
+
.crewlet-artifact-name__title-row {
|
|
3526
|
+
display: flex;
|
|
3527
|
+
align-items: center;
|
|
3528
|
+
gap: var(--spacing-1);
|
|
3529
|
+
min-width: 0;
|
|
3530
|
+
}
|
|
3531
|
+
|
|
3532
|
+
.crewlet-artifact-name__title {
|
|
3533
|
+
min-width: 0;
|
|
3534
|
+
overflow: hidden;
|
|
3535
|
+
text-overflow: ellipsis;
|
|
3536
|
+
white-space: nowrap;
|
|
3537
|
+
color: var(--color-text-primary);
|
|
3538
|
+
font-size: var(--font-size-sm);
|
|
3539
|
+
font-weight: var(--font-weight-medium);
|
|
3540
|
+
line-height: 1.35;
|
|
3541
|
+
}
|
|
3542
|
+
|
|
3543
|
+
.crewlet-artifact-name__pin {
|
|
3544
|
+
display: inline-flex;
|
|
3545
|
+
flex: none;
|
|
3546
|
+
color: var(--color-text-tertiary);
|
|
3012
3547
|
}
|
|
3013
3548
|
|
|
3014
|
-
.crewlet-
|
|
3015
|
-
|
|
3016
|
-
|
|
3549
|
+
.crewlet-artifact-name__detail {
|
|
3550
|
+
display: flex;
|
|
3551
|
+
align-items: baseline;
|
|
3552
|
+
gap: var(--spacing-1);
|
|
3553
|
+
min-width: 0;
|
|
3554
|
+
overflow: hidden;
|
|
3555
|
+
white-space: nowrap;
|
|
3556
|
+
color: var(--color-text-tertiary);
|
|
3557
|
+
font-size: var(--font-size-xs);
|
|
3558
|
+
line-height: 1.35;
|
|
3017
3559
|
}
|
|
3018
3560
|
|
|
3019
|
-
.crewlet-
|
|
3020
|
-
|
|
3561
|
+
.crewlet-artifact-name__kind,
|
|
3562
|
+
.crewlet-artifact-name__dot {
|
|
3563
|
+
flex: none;
|
|
3021
3564
|
}
|
|
3022
3565
|
|
|
3023
|
-
.crewlet-
|
|
3024
|
-
|
|
3025
|
-
|
|
3566
|
+
.crewlet-artifact-name__about {
|
|
3567
|
+
min-width: 0;
|
|
3568
|
+
overflow: hidden;
|
|
3569
|
+
text-overflow: ellipsis;
|
|
3026
3570
|
}
|
|
3027
3571
|
|
|
3028
3572
|
@media (prefers-reduced-motion: reduce) {
|
|
3029
|
-
.crewlet-
|
|
3573
|
+
.crewlet-artifact-name__mark {
|
|
3030
3574
|
transition: none;
|
|
3031
3575
|
}
|
|
3032
3576
|
}
|
|
3033
3577
|
|
|
3034
3578
|
|
|
3035
|
-
/*
|
|
3036
|
-
/*
|
|
3037
|
-
* A kind's colours, set once per kind on `--crewlet-kind-*` by its class
|
|
3038
|
-
* (`crewlet-kind--<kind>`): the hue, its Fill and Line steps and the ink a
|
|
3039
|
-
* glyph is drawn in. Every surface that tints by kind reads these, so a kind
|
|
3040
|
-
* glyph in a bar, a card's badge and a Make row's tile repaint together with
|
|
3041
|
-
* the theme, and no surface spells a kind's colour of its own. A sheet of
|
|
3042
|
-
* its own, imported by each surface that tints, because the glyph's module
|
|
3043
|
-
* carries no stylesheet (a frame that draws one glyph takes nothing else).
|
|
3044
|
-
*/
|
|
3045
|
-
.crewlet-kind--doc { --crewlet-kind-hue: var(--color-artifact-kind-doc); --crewlet-kind-fill: var(--color-artifact-kind-doc-fill); --crewlet-kind-line: var(--color-artifact-kind-doc-line); --crewlet-kind-ink: var(--color-artifact-kind-doc-ink); }
|
|
3046
|
-
.crewlet-kind--slides { --crewlet-kind-hue: var(--color-artifact-kind-slides); --crewlet-kind-fill: var(--color-artifact-kind-slides-fill); --crewlet-kind-line: var(--color-artifact-kind-slides-line); --crewlet-kind-ink: var(--color-artifact-kind-slides-ink); }
|
|
3047
|
-
.crewlet-kind--design { --crewlet-kind-hue: var(--color-artifact-kind-design); --crewlet-kind-fill: var(--color-artifact-kind-design-fill); --crewlet-kind-line: var(--color-artifact-kind-design-line); --crewlet-kind-ink: var(--color-artifact-kind-design-ink); }
|
|
3048
|
-
.crewlet-kind--dashboard { --crewlet-kind-hue: var(--color-artifact-kind-dashboard); --crewlet-kind-fill: var(--color-artifact-kind-dashboard-fill); --crewlet-kind-line: var(--color-artifact-kind-dashboard-line); --crewlet-kind-ink: var(--color-artifact-kind-dashboard-ink); }
|
|
3049
|
-
.crewlet-kind--html { --crewlet-kind-hue: var(--color-artifact-kind-html); --crewlet-kind-fill: var(--color-artifact-kind-html-fill); --crewlet-kind-line: var(--color-artifact-kind-html-line); --crewlet-kind-ink: var(--color-artifact-kind-html-ink); }
|
|
3050
|
-
.crewlet-kind--sheet { --crewlet-kind-hue: var(--color-artifact-kind-sheet); --crewlet-kind-fill: var(--color-artifact-kind-sheet-fill); --crewlet-kind-line: var(--color-artifact-kind-sheet-line); --crewlet-kind-ink: var(--color-artifact-kind-sheet-ink); }
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
/* ArtifactPanel-HW3SU7CP.css */
|
|
3579
|
+
/* ArtifactPanel-KKUUIPEU.css */
|
|
3054
3580
|
/*
|
|
3055
3581
|
* The workspace is a row: the artifact's body, then at most one panel. The
|
|
3056
3582
|
* body scrolls itself, so a panel beside it stays in view however far the
|
|
@@ -3170,6 +3696,15 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
3170
3696
|
overscroll-behavior: contain;
|
|
3171
3697
|
}
|
|
3172
3698
|
|
|
3699
|
+
/* THE FOOT holds the panel's own commit, outside the scrolling body, so it
|
|
3700
|
+
stays in reach at every scroll. Its inset is the body's. */
|
|
3701
|
+
.crewlet-artifact-panel__foot {
|
|
3702
|
+
flex: none;
|
|
3703
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
3704
|
+
border-top: 1px solid var(--color-border-default);
|
|
3705
|
+
background: var(--color-surface-background);
|
|
3706
|
+
}
|
|
3707
|
+
|
|
3173
3708
|
/* NOT ROOM FOR TWO COLUMNS: the panel slides over the artifact's end edge,
|
|
3174
3709
|
raised off it, rather than squeezing the artifact under a useful width. */
|
|
3175
3710
|
@container crewlet-artifact-workspace (width < 960px) {
|
|
@@ -5095,7 +5630,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5095
5630
|
}
|
|
5096
5631
|
|
|
5097
5632
|
|
|
5098
|
-
/* CanvasBoard-
|
|
5633
|
+
/* CanvasBoard-TS4P356F.css */
|
|
5099
5634
|
/*
|
|
5100
5635
|
* A canvas of artboards and notes (CanvasBoard.tsx). Boards and notes are laid
|
|
5101
5636
|
* out in canvas pixels inside the canvas's world and scale with it; their
|
|
@@ -5180,19 +5715,26 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5180
5715
|
}
|
|
5181
5716
|
|
|
5182
5717
|
/*
|
|
5183
|
-
* HOVER, then SELECTION
|
|
5184
|
-
* the
|
|
5185
|
-
*
|
|
5718
|
+
* HOVER, then SELECTION: one screen pixel each, over the hairline. Hover is
|
|
5719
|
+
* the selected edge, the accent mixed toward the canvas, so pointing at a
|
|
5720
|
+
* board previews the pick without claiming it; selection is the full accent,
|
|
5721
|
+
* crisp, with its four corners drawn, which are what say "this one" on a
|
|
5722
|
+
* canvas where a board's own content can be any colour. It was two pixels,
|
|
5723
|
+
* the focus ring's weight in the focus ring's hue, so a picked board and the
|
|
5724
|
+
* board the keyboard was on read alike; the 2px ring is the live board's now
|
|
5725
|
+
* alone ([data-active], below), which takes the pointer like a focused frame.
|
|
5726
|
+
* Hovering a board's name is hovering its board, which is how a reader finds
|
|
5727
|
+
* the board a name belongs to on a crowded canvas.
|
|
5186
5728
|
*/
|
|
5187
5729
|
.crewlet-canvas-board__board:hover .crewlet-canvas-board__body,
|
|
5188
5730
|
.crewlet-canvas-board__note:hover {
|
|
5189
|
-
outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-
|
|
5731
|
+
outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-border-selected);
|
|
5190
5732
|
outline-offset: 0;
|
|
5191
5733
|
}
|
|
5192
5734
|
|
|
5193
5735
|
.crewlet-canvas-board__board[data-selected] .crewlet-canvas-board__body,
|
|
5194
5736
|
.crewlet-canvas-board__note[data-selected] {
|
|
5195
|
-
outline: calc(
|
|
5737
|
+
outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-brand-accent);
|
|
5196
5738
|
outline-offset: 0;
|
|
5197
5739
|
}
|
|
5198
5740
|
|
|
@@ -5300,7 +5842,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5300
5842
|
transform-origin: bottom left;
|
|
5301
5843
|
}
|
|
5302
5844
|
|
|
5303
|
-
/* A board drawn too narrow
|
|
5845
|
+
/* A board drawn too narrow for even its number goes unnamed (`boardName`). */
|
|
5304
5846
|
.crewlet-canvas-board__board[data-untitled] > .crewlet-canvas-board__chrome {
|
|
5305
5847
|
display: none;
|
|
5306
5848
|
}
|
|
@@ -5636,7 +6178,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5636
6178
|
}
|
|
5637
6179
|
|
|
5638
6180
|
|
|
5639
|
-
/* Card-
|
|
6181
|
+
/* Card-QOVASQNU.css */
|
|
5640
6182
|
/*
|
|
5641
6183
|
* Card, THE surface. Everything on a screen is a card, a row inside one, or a
|
|
5642
6184
|
* control.
|
|
@@ -5681,7 +6223,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5681
6223
|
* `box-shadow: <shadow>, none` is invalid at computed-value time, so the
|
|
5682
6224
|
* declaration is dropped and the light card loses the elevation the list was
|
|
5683
6225
|
* built around. Alone on a pseudo element the same token is valid in both
|
|
5684
|
-
* themes, and it composes with
|
|
6226
|
+
* themes, and it composes with a chosen card's edge rather than replacing
|
|
5685
6227
|
* whichever was declared last, exactly as the rail does.
|
|
5686
6228
|
*/
|
|
5687
6229
|
.crewlet-card--elevated::after {
|
|
@@ -5755,8 +6297,8 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5755
6297
|
/*
|
|
5756
6298
|
* THE FLUSH RECIPE. The slots reach the card's edges, and the clip is what
|
|
5757
6299
|
* makes the header's hairline and a table's own corners follow the radius
|
|
5758
|
-
* instead of crossing it.
|
|
5759
|
-
*
|
|
6300
|
+
* instead of crossing it. A chosen card's edge and fill survive the clip
|
|
6301
|
+
* because they are its own border and background.
|
|
5760
6302
|
*/
|
|
5761
6303
|
.crewlet-card--flush {
|
|
5762
6304
|
overflow: hidden;
|
|
@@ -5839,29 +6381,34 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5839
6381
|
|
|
5840
6382
|
/* One ring, over the card's own boundary rather than 2px off it, which is two
|
|
5841
6383
|
edges with a gap between them: the rule every field keeps (see Input.css).
|
|
5842
|
-
|
|
5843
|
-
|
|
6384
|
+
On a chosen card it covers the selected edge, and the selected fill inside
|
|
6385
|
+
it still says the card is chosen. */
|
|
5844
6386
|
.crewlet-card.is-interactive:focus-visible {
|
|
5845
6387
|
outline: 2px solid var(--color-focus);
|
|
5846
6388
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
5847
6389
|
}
|
|
5848
6390
|
|
|
5849
6391
|
/*
|
|
5850
|
-
* Chosen
|
|
5851
|
-
*
|
|
5852
|
-
*
|
|
6392
|
+
* Chosen, as every chosen option in the package is drawn: the selected edge
|
|
6393
|
+
* (the accent mixed toward the card) over the selected fill. It was the full
|
|
6394
|
+
* accent border under --shadow-selection, a second accent ring two pixels
|
|
6395
|
+
* deep, which is the focus ring's weight in the focus ring's hue, so a grid
|
|
6396
|
+
* of cards showed the pick and the keyboard's place alike. The fill is laid
|
|
6397
|
+
* as an IMAGE over the card's own surface rather than in place of it, so the
|
|
6398
|
+
* card keeps its ground and the tint composites over it, as it does over a
|
|
6399
|
+
* row.
|
|
5853
6400
|
*/
|
|
5854
6401
|
.crewlet-card.is-selected {
|
|
5855
|
-
|
|
5856
|
-
|
|
6402
|
+
border-color: var(--color-border-selected);
|
|
6403
|
+
background-image: linear-gradient(var(--color-surface-selected), var(--color-surface-selected));
|
|
5857
6404
|
}
|
|
5858
6405
|
|
|
5859
6406
|
/* ---- Rails ------------------------------------------------------------- */
|
|
5860
6407
|
|
|
5861
6408
|
/*
|
|
5862
6409
|
* A state down the leading edge. Drawn as a pseudo element rather than a
|
|
5863
|
-
* border or an inset shadow, so it composes with the elevated shadow and
|
|
5864
|
-
*
|
|
6410
|
+
* border or an inset shadow, so it composes with the elevated shadow and a
|
|
6411
|
+
* chosen card's edge instead of replacing whichever one was declared last.
|
|
5865
6412
|
*/
|
|
5866
6413
|
.crewlet-card--rail-info::before,
|
|
5867
6414
|
.crewlet-card--rail-warning::before,
|
|
@@ -7318,7 +7865,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7318
7865
|
}
|
|
7319
7866
|
|
|
7320
7867
|
|
|
7321
|
-
/* ChoiceButtons-
|
|
7868
|
+
/* ChoiceButtons-FLIFXFFS.css */
|
|
7322
7869
|
/*
|
|
7323
7870
|
* One answer, sent with one press: a column of buttons as tall as a touch
|
|
7324
7871
|
* target, the recommended one first and filled with the accent.
|
|
@@ -7357,6 +7904,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7357
7904
|
border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
7358
7905
|
}
|
|
7359
7906
|
|
|
7907
|
+
/*
|
|
7908
|
+
* AN OPTION WITH A DETAIL STARTS AT ITS TOP. Laid out as tiles (a host's grid
|
|
7909
|
+
* of columns), the options in one row stretch to the tallest, and centred
|
|
7910
|
+
* text put a one-line detail's label lower than its neighbour's two-line
|
|
7911
|
+
* one. A column of options is unchanged: each is as tall as its own text.
|
|
7912
|
+
*/
|
|
7913
|
+
.crewlet-choice-buttons__option:has(.crewlet-choice-buttons__detail) {
|
|
7914
|
+
align-items: flex-start;
|
|
7915
|
+
}
|
|
7916
|
+
|
|
7360
7917
|
.crewlet-choice-buttons__option:hover:not([aria-disabled='true']) {
|
|
7361
7918
|
background: var(--color-surface-elevated);
|
|
7362
7919
|
border-color: var(--color-border-strong-hover);
|
|
@@ -7448,11 +8005,13 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7448
8005
|
}
|
|
7449
8006
|
|
|
7450
8007
|
|
|
7451
|
-
/* ChoiceList-
|
|
8008
|
+
/* ChoiceList-EA2W6MOS.css */
|
|
7452
8009
|
/*
|
|
7453
8010
|
* A short list of answers in one bordered box: a radio, the label with a line
|
|
7454
8011
|
* of detail under it, and a tag at the row's end. The selected row takes the
|
|
7455
|
-
* accent's soft
|
|
8012
|
+
* selected fill (the accent's soft tint), so the answer reads at a glance; the
|
|
8013
|
+
* radio is the mark that clears 3:1, and no row is ever ringed in the accent,
|
|
8014
|
+
* which is the focus ring's colour.
|
|
7456
8015
|
*/
|
|
7457
8016
|
.crewlet-choice-list {
|
|
7458
8017
|
/* The platform's radio, sized here so a panel can line up with the text beside it. */
|
|
@@ -7517,21 +8076,47 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7517
8076
|
}
|
|
7518
8077
|
|
|
7519
8078
|
.crewlet-choice-list__row.is-checked {
|
|
7520
|
-
background: var(--color-
|
|
8079
|
+
background: var(--color-surface-selected);
|
|
7521
8080
|
}
|
|
7522
8081
|
|
|
7523
8082
|
.crewlet-choice-list.is-disabled .crewlet-choice-list__row {
|
|
7524
8083
|
cursor: not-allowed;
|
|
7525
8084
|
}
|
|
7526
8085
|
|
|
8086
|
+
/*
|
|
8087
|
+
* THE RADIO IS DRAWN, not the platform's. In a dark palette the platform's
|
|
8088
|
+
* own radio fills an unchosen answer with a grey disc, which beside the one
|
|
8089
|
+
* chosen read as a second, muted choice. Drawn here, an unchosen answer is an
|
|
8090
|
+
* empty ring on the control boundary (3:1 on every ground) and the chosen one
|
|
8091
|
+
* the accent ring round an accent dot. Forced colours hand it back to the
|
|
8092
|
+
* platform, which draws it in the system's own colours.
|
|
8093
|
+
*/
|
|
7527
8094
|
.crewlet-choice-list__radio {
|
|
8095
|
+
appearance: none;
|
|
8096
|
+
display: inline-grid;
|
|
8097
|
+
place-content: center;
|
|
8098
|
+
flex: none;
|
|
8099
|
+
box-sizing: border-box;
|
|
7528
8100
|
width: var(--crewlet-choice-list-radio-size);
|
|
7529
8101
|
height: var(--crewlet-choice-list-radio-size);
|
|
7530
8102
|
margin: 3px 0 0;
|
|
7531
|
-
|
|
8103
|
+
border: 1px solid var(--color-border-control);
|
|
8104
|
+
border-radius: 50%;
|
|
8105
|
+
background: transparent;
|
|
7532
8106
|
cursor: inherit;
|
|
7533
8107
|
}
|
|
7534
8108
|
|
|
8109
|
+
.crewlet-choice-list__radio:checked {
|
|
8110
|
+
border-color: var(--color-brand-accent);
|
|
8111
|
+
background: radial-gradient(circle, var(--color-brand-accent) 0 3px, transparent 3.5px);
|
|
8112
|
+
}
|
|
8113
|
+
|
|
8114
|
+
@media (forced-colors: active) {
|
|
8115
|
+
.crewlet-choice-list__radio {
|
|
8116
|
+
appearance: auto;
|
|
8117
|
+
}
|
|
8118
|
+
}
|
|
8119
|
+
|
|
7535
8120
|
/* A radio draws its own edge, so the ring sits on it, as a checkbox's does. */
|
|
7536
8121
|
.crewlet-choice-list__radio:focus-visible {
|
|
7537
8122
|
outline: 2px solid var(--color-focus);
|
|
@@ -7556,13 +8141,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7556
8141
|
overflow-wrap: anywhere;
|
|
7557
8142
|
}
|
|
7558
8143
|
|
|
8144
|
+
/* A tag says something ABOUT an answer ("Suggested"), so it is set in the
|
|
8145
|
+
tertiary ink: in the accent ink it was a second accent mark on the chosen
|
|
8146
|
+
row, beside the radio and the fill that already say which one is chosen. */
|
|
7559
8147
|
.crewlet-choice-list__tag {
|
|
7560
8148
|
padding-top: 2px;
|
|
7561
8149
|
font-size: var(--font-size-2xs);
|
|
7562
8150
|
font-weight: 500;
|
|
7563
8151
|
letter-spacing: 0.05em;
|
|
7564
8152
|
text-transform: uppercase;
|
|
7565
|
-
color: var(--color-
|
|
8153
|
+
color: var(--color-text-tertiary);
|
|
7566
8154
|
white-space: nowrap;
|
|
7567
8155
|
}
|
|
7568
8156
|
|
|
@@ -7582,7 +8170,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7582
8170
|
padding: var(--spacing-1) var(--spacing-2) var(--spacing-3) calc(var(--spacing-2) + var(--crewlet-choice-list-radio-size) + var(--spacing-3));
|
|
7583
8171
|
border-end-start-radius: var(--radius-sm);
|
|
7584
8172
|
border-end-end-radius: var(--radius-sm);
|
|
7585
|
-
background: var(--color-
|
|
8173
|
+
background: var(--color-surface-selected);
|
|
7586
8174
|
}
|
|
7587
8175
|
|
|
7588
8176
|
.crewlet-choice-list__footer {
|
|
@@ -8285,12 +8873,15 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8285
8873
|
}
|
|
8286
8874
|
|
|
8287
8875
|
|
|
8288
|
-
/* Composer-
|
|
8876
|
+
/* Composer-PXITWNEK.css */
|
|
8289
8877
|
/*
|
|
8290
8878
|
* A message written in place: the field and its footer strip in one box. The
|
|
8291
|
-
* BOX takes the focus ring
|
|
8292
|
-
*
|
|
8293
|
-
*
|
|
8879
|
+
* BOX takes the focus ring every field in the package draws (see Input.css):
|
|
8880
|
+
* an outline over its boundary, 2px for the keyboard and the hairline for a
|
|
8881
|
+
* pointer, so the field inside draws no border or outline of its own and the
|
|
8882
|
+
* footer reads as part of what is being written. It used to recolour the
|
|
8883
|
+
* border to the accent AND lay a 2px soft halo outside it: two highlights for
|
|
8884
|
+
* one state, and the loudest edge on a page whose field was focused on load.
|
|
8294
8885
|
*/
|
|
8295
8886
|
.crewlet-composer {
|
|
8296
8887
|
display: grid;
|
|
@@ -8298,18 +8889,23 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8298
8889
|
border: 1px solid var(--color-border-strong);
|
|
8299
8890
|
border-radius: var(--radius-md);
|
|
8300
8891
|
background: var(--color-surface-background);
|
|
8301
|
-
transition:
|
|
8302
|
-
border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
8303
|
-
box-shadow var(--motion-duration-fast) var(--motion-easing-default);
|
|
8892
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
8304
8893
|
}
|
|
8305
8894
|
|
|
8306
8895
|
.crewlet-composer:hover {
|
|
8307
8896
|
border-color: var(--color-border-strong-hover);
|
|
8308
8897
|
}
|
|
8309
8898
|
|
|
8310
|
-
|
|
8311
|
-
|
|
8312
|
-
|
|
8899
|
+
/* Keyed on the FIELD, not :focus-within: the footer holds the send action,
|
|
8900
|
+
and a reader tabbing onto it is shown that button's ring, not the box's. */
|
|
8901
|
+
.crewlet-composer:has(.crewlet-composer__field:focus-visible) {
|
|
8902
|
+
outline: 2px solid var(--color-focus);
|
|
8903
|
+
outline-offset: -1px;
|
|
8904
|
+
}
|
|
8905
|
+
|
|
8906
|
+
:root[data-crewlet-focus='pointer'] .crewlet-composer:has(.crewlet-composer__field:focus-visible) {
|
|
8907
|
+
outline-width: 1px;
|
|
8908
|
+
outline-color: var(--color-border-selected);
|
|
8313
8909
|
}
|
|
8314
8910
|
|
|
8315
8911
|
.crewlet-composer .crewlet-composer__field {
|
|
@@ -8322,11 +8918,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8322
8918
|
resize: none;
|
|
8323
8919
|
}
|
|
8324
8920
|
|
|
8325
|
-
/* The ring is the box's, above
|
|
8326
|
-
|
|
8327
|
-
|
|
8328
|
-
|
|
8329
|
-
|
|
8921
|
+
/* The ring is the box's, above, so the field inside never draws one: left to
|
|
8922
|
+
the textarea's own rule it would be a second ring inside the box's, and in
|
|
8923
|
+
forced colours the box's outline is the one the system repaints. Stated on
|
|
8924
|
+
the field at rest, at a weight the textarea's focus rule cannot outrank. */
|
|
8925
|
+
.crewlet-composer .crewlet-composer__field.crewlet-textarea {
|
|
8926
|
+
outline: none;
|
|
8330
8927
|
}
|
|
8331
8928
|
|
|
8332
8929
|
/* Past its cap the field scrolls rather than pushing the page. */
|
|
@@ -8363,8 +8960,10 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
8363
8960
|
flex: 1;
|
|
8364
8961
|
}
|
|
8365
8962
|
|
|
8963
|
+
/* On a phone the hint goes, and a footer that held only the hint goes with it. */
|
|
8366
8964
|
@media (width < 640px) {
|
|
8367
|
-
.crewlet-composer__hint
|
|
8965
|
+
.crewlet-composer__hint,
|
|
8966
|
+
.crewlet-composer__footer[data-hint-only] {
|
|
8368
8967
|
display: none;
|
|
8369
8968
|
}
|
|
8370
8969
|
}
|
|
@@ -11340,7 +11939,7 @@ body.crewlet-data-table-resizing {
|
|
|
11340
11939
|
}
|
|
11341
11940
|
|
|
11342
11941
|
|
|
11343
|
-
/* DatasetSource-
|
|
11942
|
+
/* DatasetSource-SMGX4PS5.css */
|
|
11344
11943
|
/*
|
|
11345
11944
|
* DatasetSource: one entry of a dashboard's Sources rail. The title and its
|
|
11346
11945
|
* source kind, the definition, then where the rows stand, how many there are
|
|
@@ -11352,6 +11951,8 @@ body.crewlet-data-table-resizing {
|
|
|
11352
11951
|
display: flex;
|
|
11353
11952
|
flex-direction: column;
|
|
11354
11953
|
min-width: 0;
|
|
11954
|
+
/* Held transparent at rest so nothing moves when an entry opens. */
|
|
11955
|
+
border: 1px solid transparent;
|
|
11355
11956
|
border-radius: var(--radius-md);
|
|
11356
11957
|
}
|
|
11357
11958
|
|
|
@@ -11385,12 +11986,23 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11385
11986
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
11386
11987
|
}
|
|
11387
11988
|
|
|
11388
|
-
/*
|
|
11989
|
+
/*
|
|
11990
|
+
* The selected edge round the WHOLE ENTRY, over the selected fill on its
|
|
11991
|
+
* summary, as every chosen option is drawn: a tint of the accent, never the
|
|
11992
|
+
* full accent the focus ring is drawn in. The edge used to ring the summary
|
|
11993
|
+
* alone, so the settings and figures an open source shows under it hung
|
|
11994
|
+
* below the ring with nothing saying they belonged to it; inside one edge they
|
|
11995
|
+
* read as the entry's own. The rows it opens are what say which entry is open.
|
|
11996
|
+
*/
|
|
11997
|
+
.crewlet-dataset-source--selected {
|
|
11998
|
+
border-color: var(--color-border-selected);
|
|
11999
|
+
}
|
|
12000
|
+
|
|
11389
12001
|
.crewlet-dataset-source--selected .crewlet-dataset-source__summary {
|
|
11390
|
-
|
|
11391
|
-
background: var(--color-brand-accent-soft);
|
|
12002
|
+
background: var(--color-surface-selected);
|
|
11392
12003
|
}
|
|
11393
12004
|
|
|
12005
|
+
|
|
11394
12006
|
.crewlet-dataset-source__head {
|
|
11395
12007
|
display: flex;
|
|
11396
12008
|
align-items: center;
|
|
@@ -11461,9 +12073,30 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11461
12073
|
color: var(--color-feedback-warning-ink);
|
|
11462
12074
|
}
|
|
11463
12075
|
|
|
12076
|
+
/*
|
|
12077
|
+
* AN OPEN ENTRY IS ONE CARD: the selected edge above frames the summary and
|
|
12078
|
+
* the preview together, the summary its head on the selected fill and the
|
|
12079
|
+
* preview a well under it, inset on the summary's padding, so the figures in
|
|
12080
|
+
* it (cards of their own) stand on a ground that is plainly the source's
|
|
12081
|
+
* rather than the rail's. One line separates head from well, in the same
|
|
12082
|
+
* selected edge, and the head sits INSIDE the frame rather than over it: its
|
|
12083
|
+
* fill laid over the frame's edge would paint that edge out.
|
|
12084
|
+
*/
|
|
12085
|
+
.crewlet-dataset-source--open {
|
|
12086
|
+
background: var(--color-surface-inset);
|
|
12087
|
+
}
|
|
12088
|
+
|
|
12089
|
+
.crewlet-dataset-source--open > .crewlet-dataset-source__summary {
|
|
12090
|
+
border-block-end-color: var(--color-border-selected);
|
|
12091
|
+
border-start-start-radius: calc(var(--radius-md) - 1px);
|
|
12092
|
+
border-start-end-radius: calc(var(--radius-md) - 1px);
|
|
12093
|
+
border-end-start-radius: 0;
|
|
12094
|
+
border-end-end-radius: 0;
|
|
12095
|
+
}
|
|
12096
|
+
|
|
11464
12097
|
.crewlet-dataset-source__preview {
|
|
11465
12098
|
min-width: 0;
|
|
11466
|
-
padding: var(--spacing-
|
|
12099
|
+
padding: var(--spacing-3);
|
|
11467
12100
|
}
|
|
11468
12101
|
|
|
11469
12102
|
.crewlet-dataset-source-list {
|
|
@@ -11480,7 +12113,7 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11480
12113
|
}
|
|
11481
12114
|
|
|
11482
12115
|
|
|
11483
|
-
/* DateTimePicker-
|
|
12116
|
+
/* DateTimePicker-2IVTKFV2.css */
|
|
11484
12117
|
/*
|
|
11485
12118
|
* DateTimePicker: a Select-shaped trigger over a calendar dialog.
|
|
11486
12119
|
*
|
|
@@ -11534,10 +12167,17 @@ button.crewlet-dataset-source__summary:focus-visible {
|
|
|
11534
12167
|
*/
|
|
11535
12168
|
.crewlet-datetime:focus-visible,
|
|
11536
12169
|
.crewlet-datetime.is-open {
|
|
11537
|
-
outline:
|
|
12170
|
+
outline: 2px solid var(--color-focus);
|
|
11538
12171
|
outline-offset: -1px;
|
|
11539
12172
|
}
|
|
11540
12173
|
|
|
12174
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
12175
|
+
:root[data-crewlet-focus='pointer'] .crewlet-datetime:focus-visible,
|
|
12176
|
+
:root[data-crewlet-focus='pointer'] .crewlet-datetime.is-open {
|
|
12177
|
+
outline-width: 1px;
|
|
12178
|
+
outline-color: var(--color-border-selected);
|
|
12179
|
+
}
|
|
12180
|
+
|
|
11541
12181
|
.crewlet-datetime.is-disabled,
|
|
11542
12182
|
.crewlet-datetime:disabled {
|
|
11543
12183
|
opacity: 0.55;
|
|
@@ -11660,10 +12300,16 @@ svg.crewlet-datetime__chevron {
|
|
|
11660
12300
|
|
|
11661
12301
|
/* The same one ring the trigger draws, over the box's own boundary. */
|
|
11662
12302
|
.crewlet-datetime__time-input:focus-visible {
|
|
11663
|
-
outline:
|
|
12303
|
+
outline: 2px solid var(--color-focus);
|
|
11664
12304
|
outline-offset: -1px;
|
|
11665
12305
|
}
|
|
11666
12306
|
|
|
12307
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
12308
|
+
:root[data-crewlet-focus='pointer'] .crewlet-datetime__time-input:focus-visible {
|
|
12309
|
+
outline-width: 1px;
|
|
12310
|
+
outline-color: var(--color-border-selected);
|
|
12311
|
+
}
|
|
12312
|
+
|
|
11667
12313
|
.crewlet-datetime__footer {
|
|
11668
12314
|
display: flex;
|
|
11669
12315
|
align-items: center;
|
|
@@ -12376,7 +13022,7 @@ svg.crewlet-datetime__chevron {
|
|
|
12376
13022
|
}
|
|
12377
13023
|
|
|
12378
13024
|
|
|
12379
|
-
/* Document-
|
|
13025
|
+
/* Document-YFWTWXJP.css */
|
|
12380
13026
|
/*
|
|
12381
13027
|
* Rendered markdown, set as a document (Document.tsx).
|
|
12382
13028
|
*
|
|
@@ -12706,17 +13352,34 @@ svg.crewlet-datetime__chevron {
|
|
|
12706
13352
|
* on no surface of its own, with a line along its foot that answers the
|
|
12707
13353
|
* pointer, the focus and a refusal. The line is a border rather than a
|
|
12708
13354
|
* shadow, because forced colours keep a border and drop a shadow.
|
|
13355
|
+
*
|
|
13356
|
+
* ONE PIXEL, AND A TINT, WHERE A POINTER PUT THE CARET. The line is the
|
|
13357
|
+
* hairline under the pointer and the selected edge (the accent mixed toward
|
|
13358
|
+
* the page) once a click has put the caret in it: the reader is already
|
|
13359
|
+
* looking at the title, and a page that focuses its title on load drew a 2px
|
|
13360
|
+
* accent bar under it before anybody had touched anything.
|
|
13361
|
+
*
|
|
13362
|
+
* TWO PIXELS IN THE FOCUS COLOUR FOR THE KEYBOARD, the area WCAG 2.2's focus
|
|
13363
|
+
* appearance asks of an indicator: the border takes the focus colour and a
|
|
13364
|
+
* shadow lays the second pixel under it, with a transparent outline that
|
|
13365
|
+
* forced colours paints in its place. The padding takes the pixel the border
|
|
13366
|
+
* no longer reserves, so the title sits where it always did.
|
|
12709
13367
|
*/
|
|
12710
13368
|
.crewlet-document-title-field {
|
|
12711
13369
|
display: block;
|
|
12712
13370
|
width: 100%;
|
|
12713
13371
|
min-width: 0;
|
|
12714
|
-
padding: 0 0 var(--spacing-1);
|
|
13372
|
+
padding: 0 0 calc(var(--spacing-1) + 1px);
|
|
12715
13373
|
border: 0;
|
|
12716
|
-
border-block-end:
|
|
13374
|
+
border-block-end: 1px solid transparent;
|
|
12717
13375
|
border-radius: 0;
|
|
12718
13376
|
background: none;
|
|
12719
13377
|
outline: none;
|
|
13378
|
+
/* A textarea of one row that grows with the title (DocumentTitleField sets
|
|
13379
|
+
its height): no handle, no scrollbar, and the title's own wrapping. */
|
|
13380
|
+
resize: none;
|
|
13381
|
+
overflow: hidden;
|
|
13382
|
+
white-space: pre-wrap;
|
|
12720
13383
|
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
12721
13384
|
}
|
|
12722
13385
|
|
|
@@ -12731,12 +13394,27 @@ svg.crewlet-datetime__chevron {
|
|
|
12731
13394
|
|
|
12732
13395
|
.crewlet-document-title-field:focus-visible {
|
|
12733
13396
|
border-block-end-color: var(--color-focus);
|
|
13397
|
+
box-shadow: 0 1px 0 var(--color-focus);
|
|
13398
|
+
outline: 2px solid transparent;
|
|
13399
|
+
}
|
|
13400
|
+
|
|
13401
|
+
:root[data-crewlet-focus='pointer'] .crewlet-document-title-field:focus-visible {
|
|
13402
|
+
border-block-end-color: var(--color-border-selected);
|
|
13403
|
+
box-shadow: none;
|
|
12734
13404
|
}
|
|
12735
13405
|
|
|
12736
13406
|
.crewlet-document-title-field[aria-invalid='true'] {
|
|
12737
13407
|
border-block-end-color: var(--color-feedback-danger);
|
|
12738
13408
|
}
|
|
12739
13409
|
|
|
13410
|
+
.crewlet-document-title-field[aria-invalid='true']:focus-visible {
|
|
13411
|
+
box-shadow: 0 1px 0 var(--color-feedback-danger);
|
|
13412
|
+
}
|
|
13413
|
+
|
|
13414
|
+
:root[data-crewlet-focus='pointer'] .crewlet-document-title-field[aria-invalid='true']:focus-visible {
|
|
13415
|
+
border-block-end-color: var(--color-feedback-danger);
|
|
13416
|
+
}
|
|
13417
|
+
|
|
12740
13418
|
@media (prefers-reduced-motion: reduce) {
|
|
12741
13419
|
.crewlet-document-title-field {
|
|
12742
13420
|
transition: none;
|
|
@@ -13313,7 +13991,7 @@ svg.crewlet-datetime__chevron {
|
|
|
13313
13991
|
}
|
|
13314
13992
|
|
|
13315
13993
|
|
|
13316
|
-
/* FilterChip-
|
|
13994
|
+
/* FilterChip-VL33P3JL.css */
|
|
13317
13995
|
/*
|
|
13318
13996
|
* The filter chip: neutral until it is on, and then the accent.
|
|
13319
13997
|
*
|
|
@@ -13397,9 +14075,13 @@ svg.crewlet-datetime__chevron {
|
|
|
13397
14075
|
cursor: not-allowed;
|
|
13398
14076
|
}
|
|
13399
14077
|
|
|
14078
|
+
/* The selected fill, and the accent's lighter line rather than the selected
|
|
14079
|
+
edge: on a pill this small the 0.6 edge, the fill and the accent ink were
|
|
14080
|
+
three accent marks on one word. The ink is the mark that clears 4.5:1, and
|
|
14081
|
+
the keyboard's 2px focus ring stays the only full-weight line. */
|
|
13400
14082
|
.crewlet-filter-chip[aria-pressed='true'],
|
|
13401
14083
|
.crewlet-filter-chip[aria-checked='true'] {
|
|
13402
|
-
background: var(--color-
|
|
14084
|
+
background: var(--color-surface-selected);
|
|
13403
14085
|
border-color: var(--color-brand-accent-soft-strong);
|
|
13404
14086
|
color: var(--color-brand-accent-ink);
|
|
13405
14087
|
}
|
|
@@ -14317,7 +14999,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14317
14999
|
}
|
|
14318
15000
|
|
|
14319
15001
|
|
|
14320
|
-
/* Input-
|
|
15002
|
+
/* Input-ABGOFENS.css */
|
|
14321
15003
|
/*
|
|
14322
15004
|
* The form row: Input, Textarea, Label, FormField, FormRow, FormSection and
|
|
14323
15005
|
* ReadOnlyField.
|
|
@@ -14401,14 +15083,18 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14401
15083
|
* forced-colors mode drops every box-shadow and keeps outlines: a ring drawn
|
|
14402
15084
|
* as a shadow disappears for exactly the readers who most need one.
|
|
14403
15085
|
*
|
|
14404
|
-
* It is
|
|
14405
|
-
*
|
|
14406
|
-
*
|
|
14407
|
-
*
|
|
14408
|
-
*
|
|
14409
|
-
*
|
|
14410
|
-
*
|
|
14411
|
-
*
|
|
15086
|
+
* It is TWO PIXELS FOR THE KEYBOARD AND ONE FOR A POINTER, laid over the
|
|
15087
|
+
* boundary. Two pixels is the area WCAG 2.2's focus appearance asks of an
|
|
15088
|
+
* indicator, and one pixel (the field's own hairline in the focus colour) was
|
|
15089
|
+
* half of it for every reader tabbing through a form. But at two pixels round
|
|
15090
|
+
* every box a caret landed in, a click into a title or a filter box drew a
|
|
15091
|
+
* heavy band round the one thing the reader was already looking at, so the
|
|
15092
|
+
* rule after this one narrows the ring where the document says the last move
|
|
15093
|
+
* was a pointer. Drawn over the boundary rather than outside it, a scroller
|
|
15094
|
+
* cannot clip it and the field does not grow a halo the moment a caret lands
|
|
15095
|
+
* in it, which is what a filter box in a toolbar of them did to the row it
|
|
15096
|
+
* sits in. Every boxed field in the package rings this way (`Input.test.tsx`
|
|
15097
|
+
* holds them to it).
|
|
14412
15098
|
*
|
|
14413
15099
|
* THE BORDER IS LEFT ALONE. Recolouring it under the ring says nothing the
|
|
14414
15100
|
* ring has not already said, and it is what cost the error state its own
|
|
@@ -14424,10 +15110,28 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14424
15110
|
* on a pointer press as well as on a tab.
|
|
14425
15111
|
*/
|
|
14426
15112
|
.crewlet-input:has(.crewlet-input__control:focus-visible) {
|
|
14427
|
-
outline:
|
|
15113
|
+
outline: 2px solid var(--color-focus);
|
|
14428
15114
|
outline-offset: -1px;
|
|
14429
15115
|
}
|
|
14430
15116
|
|
|
15117
|
+
/*
|
|
15118
|
+
* NARROWED FOR A POINTER. The ring above is the keyboard's: 2px, the area
|
|
15119
|
+
* WCAG 2.2's focus appearance asks of an indicator, drawn over the boundary
|
|
15120
|
+
* and one pixel into the box. A field matches :focus-visible on a click as
|
|
15121
|
+
* well, and a reader who put the caret there with a pointer is already looking
|
|
15122
|
+
* at it, so where the document says the last move was a pointer
|
|
15123
|
+
* (`data-crewlet-focus`, kept by `trackFocusModality`, which every field
|
|
15124
|
+
* starts) the ring is one pixel in the selected edge, the accent mixed toward
|
|
15125
|
+
* the page: a page that focuses its first field on load drew the focus colour
|
|
15126
|
+
* round it before anybody had touched a key. A refused field keeps its own
|
|
15127
|
+
* colour under a pointer too (below). A document that tracks nothing keeps
|
|
15128
|
+
* the keyboard's ring.
|
|
15129
|
+
*/
|
|
15130
|
+
:root[data-crewlet-focus='pointer'] .crewlet-input:has(.crewlet-input__control:focus-visible) {
|
|
15131
|
+
outline-width: 1px;
|
|
15132
|
+
outline-color: var(--color-border-selected);
|
|
15133
|
+
}
|
|
15134
|
+
|
|
14431
15135
|
.crewlet-input.is-error {
|
|
14432
15136
|
border-color: var(--color-feedback-danger);
|
|
14433
15137
|
}
|
|
@@ -14448,6 +15152,10 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14448
15152
|
outline-color: var(--color-feedback-danger);
|
|
14449
15153
|
}
|
|
14450
15154
|
|
|
15155
|
+
:root[data-crewlet-focus='pointer'] .crewlet-input.is-error:has(.crewlet-input__control:focus-visible) {
|
|
15156
|
+
outline-color: var(--color-feedback-danger);
|
|
15157
|
+
}
|
|
15158
|
+
|
|
14451
15159
|
.crewlet-input.is-disabled {
|
|
14452
15160
|
opacity: 0.6;
|
|
14453
15161
|
cursor: not-allowed;
|
|
@@ -14684,10 +15392,16 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14684
15392
|
on the control itself: a textarea is the field, with nothing wrapped round
|
|
14685
15393
|
it and nothing focusable inside it. */
|
|
14686
15394
|
.crewlet-textarea:focus-visible {
|
|
14687
|
-
outline:
|
|
15395
|
+
outline: 2px solid var(--color-focus);
|
|
14688
15396
|
outline-offset: -1px;
|
|
14689
15397
|
}
|
|
14690
15398
|
|
|
15399
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
15400
|
+
:root[data-crewlet-focus='pointer'] .crewlet-textarea:focus-visible {
|
|
15401
|
+
outline-width: 1px;
|
|
15402
|
+
outline-color: var(--color-border-selected);
|
|
15403
|
+
}
|
|
15404
|
+
|
|
14691
15405
|
.crewlet-textarea.is-error {
|
|
14692
15406
|
border-color: var(--color-feedback-danger);
|
|
14693
15407
|
}
|
|
@@ -14696,6 +15410,10 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
14696
15410
|
outline-color: var(--color-feedback-danger);
|
|
14697
15411
|
}
|
|
14698
15412
|
|
|
15413
|
+
:root[data-crewlet-focus='pointer'] .crewlet-textarea.is-error:focus-visible {
|
|
15414
|
+
outline-color: var(--color-feedback-danger);
|
|
15415
|
+
}
|
|
15416
|
+
|
|
14699
15417
|
.crewlet-textarea.is-disabled {
|
|
14700
15418
|
opacity: 0.6;
|
|
14701
15419
|
cursor: not-allowed;
|
|
@@ -15145,7 +15863,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
15145
15863
|
}
|
|
15146
15864
|
|
|
15147
15865
|
|
|
15148
|
-
/* LayersList-
|
|
15866
|
+
/* LayersList-TBNF4XGL.css */
|
|
15149
15867
|
/*
|
|
15150
15868
|
* A canvas's list of layers (LayersList.tsx): a heading that stays, over one
|
|
15151
15869
|
* line per entry that scrolls on its own.
|
|
@@ -15216,13 +15934,26 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
15216
15934
|
color: var(--color-text-primary);
|
|
15217
15935
|
}
|
|
15218
15936
|
|
|
15219
|
-
/*
|
|
15220
|
-
|
|
15937
|
+
/*
|
|
15938
|
+
* THE PICKED ENTRY IS A SELECTION, drawn as the package draws a chosen
|
|
15939
|
+
* option: the selected fill under the primary ink, as a canvas's layers panel
|
|
15940
|
+
* marks the board picked on it. It used to take the accent rail a CURRENT row
|
|
15941
|
+
* takes (the outline's heading, the page in the rail), which says "you are
|
|
15942
|
+
* here" and beside a canvas read as a second selection ring. The rail's room
|
|
15943
|
+
* is still held, so nothing moves, and forced colours draw it in the system's
|
|
15944
|
+
* own selected colour, since they drop the fill.
|
|
15945
|
+
*/
|
|
15221
15946
|
.crewlet-layers-list__item[aria-current='true'] {
|
|
15222
|
-
|
|
15947
|
+
background: var(--color-surface-selected);
|
|
15223
15948
|
color: var(--color-text-primary);
|
|
15224
15949
|
}
|
|
15225
15950
|
|
|
15951
|
+
@media (forced-colors: active) {
|
|
15952
|
+
.crewlet-layers-list__item[aria-current='true'] {
|
|
15953
|
+
border-inline-start-color: Highlight;
|
|
15954
|
+
}
|
|
15955
|
+
}
|
|
15956
|
+
|
|
15226
15957
|
/* The ring lies inside the entry, where the scroller beside it cannot cut it. */
|
|
15227
15958
|
.crewlet-layers-list__item:focus-visible {
|
|
15228
15959
|
outline: 2px solid var(--color-focus);
|
|
@@ -16117,9 +16848,10 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16117
16848
|
}
|
|
16118
16849
|
|
|
16119
16850
|
|
|
16120
|
-
/* LivePreview-
|
|
16851
|
+
/* LivePreview-BROGKR4N.css */
|
|
16121
16852
|
/*
|
|
16122
|
-
* A live preview: the stand-in
|
|
16853
|
+
* A live preview: the stand-in, the still copy of what the content drew and
|
|
16854
|
+
* the live layer it is drawn in, stacked in that order in one box. The box
|
|
16123
16855
|
* takes its size from its parent (a card's preview area), so it fills it and
|
|
16124
16856
|
* clips whatever the content lays out past its edge.
|
|
16125
16857
|
*/
|
|
@@ -16137,9 +16869,43 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16137
16869
|
position: absolute;
|
|
16138
16870
|
inset: 0;
|
|
16139
16871
|
display: flex;
|
|
16140
|
-
transition: opacity var(--motion-duration-base) var(--motion-easing-out);
|
|
16141
16872
|
}
|
|
16142
16873
|
|
|
16874
|
+
/* THE STILL COPY: static DOM over the stand-in, which it hides. A copy just
|
|
16875
|
+
taken fades in; one the preview was given back from its store is simply
|
|
16876
|
+
there, so a card scrolled or filtered back to is as it was. */
|
|
16877
|
+
.crewlet-live-preview__still {
|
|
16878
|
+
position: absolute;
|
|
16879
|
+
inset: 0;
|
|
16880
|
+
display: block;
|
|
16881
|
+
overflow: hidden;
|
|
16882
|
+
pointer-events: none;
|
|
16883
|
+
user-select: none;
|
|
16884
|
+
}
|
|
16885
|
+
|
|
16886
|
+
.crewlet-live-preview[data-fresh] > .crewlet-live-preview__still {
|
|
16887
|
+
animation: crewlet-live-preview-arrive var(--motion-duration-base) var(--motion-easing-out);
|
|
16888
|
+
}
|
|
16889
|
+
|
|
16890
|
+
@keyframes crewlet-live-preview-arrive {
|
|
16891
|
+
from {
|
|
16892
|
+
opacity: 0;
|
|
16893
|
+
}
|
|
16894
|
+
}
|
|
16895
|
+
|
|
16896
|
+
/* A COPY IS FROZEN: what it drew never moves, so nothing in it animates or
|
|
16897
|
+
transitions, whatever the content's own styles ask of the elements it
|
|
16898
|
+
copied (a skeleton's shimmer, a chart's entrance). */
|
|
16899
|
+
.crewlet-live-preview__still *,
|
|
16900
|
+
.crewlet-live-preview__still *::before,
|
|
16901
|
+
.crewlet-live-preview__still *::after {
|
|
16902
|
+
animation: none !important;
|
|
16903
|
+
transition: none !important;
|
|
16904
|
+
}
|
|
16905
|
+
|
|
16906
|
+
/* THE LIVE LAYER renders out of sight: content that is copied is never seen
|
|
16907
|
+
live, only its copy is. A frame's page is kept rather than copied, so a
|
|
16908
|
+
framed preview's live layer is what fades in once it has drawn. */
|
|
16143
16909
|
.crewlet-live-preview__live {
|
|
16144
16910
|
position: absolute;
|
|
16145
16911
|
inset: 0;
|
|
@@ -16148,9 +16914,16 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16148
16914
|
opacity: 0;
|
|
16149
16915
|
pointer-events: none;
|
|
16150
16916
|
user-select: none;
|
|
16917
|
+
}
|
|
16918
|
+
|
|
16919
|
+
.crewlet-live-preview[data-frame] > .crewlet-live-preview__live {
|
|
16151
16920
|
transition: opacity var(--motion-duration-base) var(--motion-easing-out);
|
|
16152
16921
|
}
|
|
16153
16922
|
|
|
16923
|
+
.crewlet-live-preview[data-frame][data-state='ready'] > .crewlet-live-preview__live {
|
|
16924
|
+
opacity: 1;
|
|
16925
|
+
}
|
|
16926
|
+
|
|
16154
16927
|
/* LAID OUT AT ITS OWN SIZE from the top left corner, and scaled from there:
|
|
16155
16928
|
to the box's width, its top left the box's, or whole and centred. */
|
|
16156
16929
|
.crewlet-preview-scale {
|
|
@@ -16169,17 +16942,23 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
16169
16942
|
transform-origin: 0 0;
|
|
16170
16943
|
}
|
|
16171
16944
|
|
|
16172
|
-
|
|
16173
|
-
|
|
16174
|
-
|
|
16175
|
-
|
|
16945
|
+
/* WHAT IS UNDER A DRAWING is hidden only once it has faded in. Fading the
|
|
16946
|
+
stand-in out at the same time showed both at half strength halfway
|
|
16947
|
+
through: a double exposure. */
|
|
16176
16948
|
.crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__fallback {
|
|
16177
|
-
|
|
16949
|
+
visibility: hidden;
|
|
16950
|
+
/* Visibility is discrete and stays visible for the whole of a transition
|
|
16951
|
+
to hidden, so this holds it exactly as long as the fade above. A copy
|
|
16952
|
+
given back from the store is ready from its first style, which runs no
|
|
16953
|
+
transition, so its stand-in is never shown at all. */
|
|
16954
|
+
transition: visibility var(--motion-duration-base) linear;
|
|
16178
16955
|
}
|
|
16179
16956
|
|
|
16180
16957
|
@media (prefers-reduced-motion: reduce) {
|
|
16181
|
-
.crewlet-live-
|
|
16182
|
-
.crewlet-live-preview__live
|
|
16958
|
+
.crewlet-live-preview[data-fresh] > .crewlet-live-preview__still,
|
|
16959
|
+
.crewlet-live-preview[data-frame] > .crewlet-live-preview__live,
|
|
16960
|
+
.crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__fallback {
|
|
16961
|
+
animation: none;
|
|
16183
16962
|
transition: none;
|
|
16184
16963
|
}
|
|
16185
16964
|
}
|
|
@@ -21359,7 +22138,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
21359
22138
|
}
|
|
21360
22139
|
|
|
21361
22140
|
|
|
21362
|
-
/* Select-
|
|
22141
|
+
/* Select-W3CHTZXP.css */
|
|
21363
22142
|
/*
|
|
21364
22143
|
* Select: one chrome over two controls, and the product's only dropdown.
|
|
21365
22144
|
*
|
|
@@ -21433,10 +22212,16 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
21433
22212
|
* leave the other bare.
|
|
21434
22213
|
*/
|
|
21435
22214
|
.crewlet-select:focus-within {
|
|
21436
|
-
outline:
|
|
22215
|
+
outline: 2px solid var(--color-focus);
|
|
21437
22216
|
outline-offset: -1px;
|
|
21438
22217
|
}
|
|
21439
22218
|
|
|
22219
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
22220
|
+
:root[data-crewlet-focus='pointer'] .crewlet-select:focus-within {
|
|
22221
|
+
outline-width: 1px;
|
|
22222
|
+
outline-color: var(--color-border-selected);
|
|
22223
|
+
}
|
|
22224
|
+
|
|
21440
22225
|
/*
|
|
21441
22226
|
* A FILTER THAT IS ON. The accent border says where the reader is and the
|
|
21442
22227
|
* accent INK says what it is set to. It used to be the accent FILL with the
|
|
@@ -21495,6 +22280,10 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
21495
22280
|
outline-color: var(--color-feedback-danger);
|
|
21496
22281
|
}
|
|
21497
22282
|
|
|
22283
|
+
:root[data-crewlet-focus='pointer'] .crewlet-select.is-error:focus-within {
|
|
22284
|
+
outline-color: var(--color-feedback-danger);
|
|
22285
|
+
}
|
|
22286
|
+
|
|
21498
22287
|
.crewlet-select.is-disabled {
|
|
21499
22288
|
opacity: 0.6;
|
|
21500
22289
|
cursor: not-allowed;
|
|
@@ -21788,10 +22577,16 @@ svg.crewlet-select__chevron {
|
|
|
21788
22577
|
* outset ring on the input would be cut by the menu's own `overflow: hidden`.
|
|
21789
22578
|
*/
|
|
21790
22579
|
.crewlet-select__search:focus-within {
|
|
21791
|
-
outline:
|
|
22580
|
+
outline: 2px solid var(--color-focus);
|
|
21792
22581
|
outline-offset: -1px;
|
|
21793
22582
|
}
|
|
21794
22583
|
|
|
22584
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
22585
|
+
:root[data-crewlet-focus='pointer'] .crewlet-select__search:focus-within {
|
|
22586
|
+
outline-width: 1px;
|
|
22587
|
+
outline-color: var(--color-border-selected);
|
|
22588
|
+
}
|
|
22589
|
+
|
|
21795
22590
|
.crewlet-select__search {
|
|
21796
22591
|
display: flex;
|
|
21797
22592
|
align-items: center;
|
|
@@ -23870,13 +24665,18 @@ svg.crewlet-select__chevron {
|
|
|
23870
24665
|
}
|
|
23871
24666
|
|
|
23872
24667
|
|
|
23873
|
-
/* SlideFilmstrip-
|
|
24668
|
+
/* SlideFilmstrip-PAT7P4OG.css */
|
|
23874
24669
|
/*
|
|
23875
24670
|
* SlideFilmstrip: the column of slide thumbnails beside a deck's stage, or
|
|
23876
24671
|
* the row under it on a phone.
|
|
23877
24672
|
*
|
|
23878
|
-
* The selected slide is ringed
|
|
23879
|
-
*
|
|
24673
|
+
* The selected slide is ringed rather than filled, so its thumbnail still
|
|
24674
|
+
* shows the slide's own colours: the selected edge (a tint of the accent) on
|
|
24675
|
+
* the thumbnail's own line, the selected fill as a soft band outside it, and
|
|
24676
|
+
* its number in the accent ink. It was a 2px ring in the full accent, the
|
|
24677
|
+
* same weight and colour as the focus ring beside it, so the slide being
|
|
24678
|
+
* edited and the slide the keyboard was on could not be told apart. The
|
|
24679
|
+
* number is the mark that clears 3:1, so the state never rests on the tint.
|
|
23880
24680
|
*
|
|
23881
24681
|
* THE STRIP IS ITS OWN SCROLLER: a host bounds it (a column's max-height, a
|
|
23882
24682
|
* row's width) and the strip scrolls inside that, keeping the selected slide
|
|
@@ -23921,24 +24721,38 @@ svg.crewlet-select__chevron {
|
|
|
23921
24721
|
border: 0;
|
|
23922
24722
|
background: transparent;
|
|
23923
24723
|
border-radius: var(--radius-sm);
|
|
23924
|
-
|
|
24724
|
+
/* THE STRONG LINE AT REST: a deck's slides are mostly dark, and on the dark
|
|
24725
|
+
page the plain hairline sat within a few steps of both the page and the
|
|
24726
|
+
slide, so a strip of them had no edges at all. Under the pointer it takes
|
|
24727
|
+
the strong line's own hover step, so pointing still moves the edge. */
|
|
24728
|
+
outline: 1px solid var(--color-border-strong);
|
|
23925
24729
|
cursor: pointer;
|
|
23926
24730
|
overflow: hidden;
|
|
23927
24731
|
}
|
|
23928
24732
|
|
|
23929
24733
|
.crewlet-slide-filmstrip__thumb:hover {
|
|
23930
|
-
outline-color: var(--color-border-hover);
|
|
24734
|
+
outline-color: var(--color-border-strong-hover);
|
|
23931
24735
|
}
|
|
23932
24736
|
|
|
23933
24737
|
.crewlet-slide-filmstrip__item[data-selected='true'] .crewlet-slide-filmstrip__thumb {
|
|
23934
|
-
outline:
|
|
24738
|
+
outline-color: var(--color-border-selected);
|
|
24739
|
+
box-shadow: 0 0 0 3px var(--color-surface-selected);
|
|
24740
|
+
}
|
|
24741
|
+
|
|
24742
|
+
.crewlet-slide-filmstrip__item[data-selected='true'] .crewlet-slide-filmstrip__number {
|
|
24743
|
+
color: var(--color-brand-accent-ink);
|
|
24744
|
+
font-weight: var(--font-weight-semibold);
|
|
23935
24745
|
}
|
|
23936
24746
|
|
|
23937
24747
|
/* ONE RING, OVER THE THUMBNAIL'S OWN EDGE: the focus outline takes the place
|
|
23938
|
-
of the edge rather than standing off it as a second one
|
|
24748
|
+
of the edge rather than standing off it as a second one, and grows OUTWARD
|
|
24749
|
+
from it onto the strip's ground. It used to sit on the inset offset, inside
|
|
24750
|
+
the thumbnail, where a dark slide (most of a deck's themes) swallowed it:
|
|
24751
|
+
the focus colour measured close to the slide's own ground, and tabbing
|
|
24752
|
+
through the strip showed nothing at all. The list's own padding holds it. */
|
|
23939
24753
|
.crewlet-slide-filmstrip__thumb:focus-visible {
|
|
23940
24754
|
outline: 2px solid var(--color-focus);
|
|
23941
|
-
outline-offset:
|
|
24755
|
+
outline-offset: 0;
|
|
23942
24756
|
}
|
|
23943
24757
|
|
|
23944
24758
|
.crewlet-slide-filmstrip__item[data-hidden='true'] .crewlet-slide-stage {
|
|
@@ -24091,7 +24905,7 @@ svg.crewlet-select__chevron {
|
|
|
24091
24905
|
}
|
|
24092
24906
|
|
|
24093
24907
|
|
|
24094
|
-
/* SlideGrid-
|
|
24908
|
+
/* SlideGrid-FJA33DV4.css */
|
|
24095
24909
|
/*
|
|
24096
24910
|
* SlideGrid: every slide of a deck at once, by its outline's sections.
|
|
24097
24911
|
*/
|
|
@@ -24136,8 +24950,18 @@ svg.crewlet-select__chevron {
|
|
|
24136
24950
|
outline-color: var(--color-border-hover);
|
|
24137
24951
|
}
|
|
24138
24952
|
|
|
24953
|
+
/* THE CURRENT SLIDE, drawn as the filmstrip draws it: the selected edge on
|
|
24954
|
+
the slide's own line, the selected fill as a soft band outside it, and its
|
|
24955
|
+
number in the accent ink, the mark that clears 3:1. Never the full accent
|
|
24956
|
+
at 2px, which is the focus ring's weight and colour. */
|
|
24139
24957
|
.crewlet-slide-grid__card[aria-current='true'] .crewlet-slide-stage {
|
|
24140
|
-
outline:
|
|
24958
|
+
outline-color: var(--color-border-selected);
|
|
24959
|
+
box-shadow: 0 0 0 3px var(--color-surface-selected);
|
|
24960
|
+
}
|
|
24961
|
+
|
|
24962
|
+
.crewlet-slide-grid__card[aria-current='true'] .crewlet-slide-grid__number {
|
|
24963
|
+
color: var(--color-brand-accent-ink);
|
|
24964
|
+
font-weight: var(--font-weight-semibold);
|
|
24141
24965
|
}
|
|
24142
24966
|
|
|
24143
24967
|
/* ONE RING, round the whole card (its slide and its caption), on the inset
|
|
@@ -24236,7 +25060,7 @@ svg.crewlet-select__chevron {
|
|
|
24236
25060
|
}
|
|
24237
25061
|
|
|
24238
25062
|
|
|
24239
|
-
/* SlideStage-
|
|
25063
|
+
/* SlideStage-ZTTEQSS2.css */
|
|
24240
25064
|
/*
|
|
24241
25065
|
* SlideStage: a slide laid out at its authored size and scaled to its box.
|
|
24242
25066
|
*
|
|
@@ -24258,10 +25082,12 @@ svg.crewlet-select__chevron {
|
|
|
24258
25082
|
/* THE SLIDE'S OWN EDGE: the box is the slide (or, for a show in the page,
|
|
24259
25083
|
the room it was measured into), so its outline is the slide's edge, drawn over the slide's corners rather than outside them. A host that
|
|
24260
25084
|
marks a stage (selected, current) recolours this outline rather than adding
|
|
24261
|
-
a second line.
|
|
25085
|
+
a second line. It takes the STRONG border, not the default one: most decks
|
|
25086
|
+
are dark, and in the dark theme the default border is a step off the page,
|
|
25087
|
+
so a dark slide on a dark page had no edge at all. */
|
|
24262
25088
|
.crewlet-slide-stage--framed {
|
|
24263
25089
|
border-radius: var(--radius-sm);
|
|
24264
|
-
outline: 1px solid var(--color-border-
|
|
25090
|
+
outline: 1px solid var(--color-border-strong);
|
|
24265
25091
|
}
|
|
24266
25092
|
|
|
24267
25093
|
:fullscreen .crewlet-slide-stage--framed,
|
|
@@ -24310,7 +25136,7 @@ svg.crewlet-select__chevron {
|
|
|
24310
25136
|
}
|
|
24311
25137
|
|
|
24312
25138
|
|
|
24313
|
-
/* SourceEditor-
|
|
25139
|
+
/* SourceEditor-QAYE2JS6.css */
|
|
24314
25140
|
/*
|
|
24315
25141
|
* Source text written in place: a gutter of line numbers beside a real
|
|
24316
25142
|
* textarea, and the marks a checker placed drawn behind the text. The gutter,
|
|
@@ -24318,7 +25144,11 @@ svg.crewlet-select__chevron {
|
|
|
24318
25144
|
* so a number and a mark always sit on the line they name; the layers follow
|
|
24319
25145
|
* the field's scroll by a transform.
|
|
24320
25146
|
*
|
|
24321
|
-
* The BOX takes the focus ring
|
|
25147
|
+
* The BOX takes the focus ring every field draws (see Input.css): 2px in the
|
|
25148
|
+
* focus colour for the keyboard, one pixel of the selected edge where a
|
|
25149
|
+
* pointer put the caret. It used to recolour its border to the accent and lay
|
|
25150
|
+
* a 2px soft halo outside it, two highlights for one state, as the Composer's
|
|
25151
|
+
* did.
|
|
24322
25152
|
*/
|
|
24323
25153
|
.crewlet-source-editor {
|
|
24324
25154
|
--crewlet-source-inset: var(--spacing-2);
|
|
@@ -24334,18 +25164,21 @@ svg.crewlet-select__chevron {
|
|
|
24334
25164
|
font-family: var(--font-family-mono);
|
|
24335
25165
|
font-size: var(--font-size-xs);
|
|
24336
25166
|
line-height: var(--font-line-height-normal);
|
|
24337
|
-
transition:
|
|
24338
|
-
border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
24339
|
-
box-shadow var(--motion-duration-fast) var(--motion-easing-default);
|
|
25167
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
24340
25168
|
}
|
|
24341
25169
|
|
|
24342
25170
|
.crewlet-source-editor:hover {
|
|
24343
25171
|
border-color: var(--color-border-strong-hover);
|
|
24344
25172
|
}
|
|
24345
25173
|
|
|
24346
|
-
.crewlet-source-editor:focus-
|
|
24347
|
-
|
|
24348
|
-
|
|
25174
|
+
.crewlet-source-editor:has(.crewlet-source-editor__field:focus-visible) {
|
|
25175
|
+
outline: 2px solid var(--color-focus);
|
|
25176
|
+
outline-offset: -1px;
|
|
25177
|
+
}
|
|
25178
|
+
|
|
25179
|
+
:root[data-crewlet-focus='pointer'] .crewlet-source-editor:has(.crewlet-source-editor__field:focus-visible) {
|
|
25180
|
+
outline-width: 1px;
|
|
25181
|
+
outline-color: var(--color-border-selected);
|
|
24349
25182
|
}
|
|
24350
25183
|
|
|
24351
25184
|
.crewlet-source-editor.is-fill {
|
|
@@ -24448,11 +25281,11 @@ svg.crewlet-select__chevron {
|
|
|
24448
25281
|
color: var(--color-text-tertiary);
|
|
24449
25282
|
}
|
|
24450
25283
|
|
|
24451
|
-
/* The ring is the box's, above
|
|
24452
|
-
|
|
24453
|
-
|
|
24454
|
-
|
|
24455
|
-
outline
|
|
25284
|
+
/* The ring is the box's, above, an outline that forced colours repaint, so
|
|
25285
|
+
the field inside draws none of its own. Stated at rest, as the Composer's
|
|
25286
|
+
field is. */
|
|
25287
|
+
.crewlet-source-editor .crewlet-source-editor__field {
|
|
25288
|
+
outline: none;
|
|
24456
25289
|
}
|
|
24457
25290
|
|
|
24458
25291
|
.crewlet-source-editor .crewlet-source-editor__field[readonly] {
|
|
@@ -26984,7 +27817,7 @@ b.crewlet-switcher__match {
|
|
|
26984
27817
|
}
|
|
26985
27818
|
|
|
26986
27819
|
|
|
26987
|
-
/* TagsInput-
|
|
27820
|
+
/* TagsInput-7EGBBXHS.css */
|
|
26988
27821
|
/*
|
|
26989
27822
|
* TagsInput: several values in one field.
|
|
26990
27823
|
*
|
|
@@ -27059,10 +27892,16 @@ b.crewlet-switcher__match {
|
|
|
27059
27892
|
* the whole reason they sit above the field instead of inside it.
|
|
27060
27893
|
*/
|
|
27061
27894
|
.crewlet-tags-input__box:focus-visible {
|
|
27062
|
-
outline:
|
|
27895
|
+
outline: 2px solid var(--color-focus);
|
|
27063
27896
|
outline-offset: -1px;
|
|
27064
27897
|
}
|
|
27065
27898
|
|
|
27899
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
27900
|
+
:root[data-crewlet-focus='pointer'] .crewlet-tags-input__box:focus-visible {
|
|
27901
|
+
outline-width: 1px;
|
|
27902
|
+
outline-color: var(--color-border-selected);
|
|
27903
|
+
}
|
|
27904
|
+
|
|
27066
27905
|
.crewlet-tags-input.is-disabled {
|
|
27067
27906
|
opacity: 0.6;
|
|
27068
27907
|
}
|
|
@@ -27323,7 +28162,7 @@ b.crewlet-switcher__match {
|
|
|
27323
28162
|
}
|
|
27324
28163
|
|
|
27325
28164
|
|
|
27326
|
-
/* ThemeGallery-
|
|
28165
|
+
/* ThemeGallery-X35Y25EX.css */
|
|
27327
28166
|
/*
|
|
27328
28167
|
* The gallery of themes: each group's heading over a grid of cards.
|
|
27329
28168
|
*
|
|
@@ -27359,8 +28198,15 @@ b.crewlet-switcher__match {
|
|
|
27359
28198
|
|
|
27360
28199
|
/*
|
|
27361
28200
|
* A CARD IS ITS BORDER. Resting, the plain hairline; under the pointer, the
|
|
27362
|
-
* strong one; chosen, the
|
|
27363
|
-
* the
|
|
28201
|
+
* strong one; chosen, the selected edge (the accent mixed toward the card)
|
|
28202
|
+
* over the selected fill, with a check beside the name. One line round the
|
|
28203
|
+
* card in every state, so the chosen card is never a card inside a frame.
|
|
28204
|
+
*
|
|
28205
|
+
* THE CHOSEN CARD IS CALM ON PURPOSE. It was the full accent, which on a grid
|
|
28206
|
+
* of six read as the loudest edge on the page and as a second focus ring. The
|
|
28207
|
+
* tint and the fill say which card is on at a glance; the check says it at
|
|
28208
|
+
* the 3:1 a state mark clears, so the state never rests on the tint alone;
|
|
28209
|
+
* and the focus ring stays the one 2px accent line, for the keyboard only.
|
|
27364
28210
|
*/
|
|
27365
28211
|
.crewlet-theme-gallery__card {
|
|
27366
28212
|
display: flex;
|
|
@@ -27377,14 +28223,15 @@ b.crewlet-switcher__match {
|
|
|
27377
28223
|
cursor: pointer;
|
|
27378
28224
|
}
|
|
27379
28225
|
|
|
27380
|
-
/* Not on the chosen card: under the pointer it keeps
|
|
27381
|
-
card that says "this one" would stop saying it while it is
|
|
28226
|
+
/* Not on the chosen card: under the pointer it keeps its selected edge, or the
|
|
28227
|
+
one card that says "this one" would stop saying it while it is pointed at. */
|
|
27382
28228
|
.crewlet-theme-gallery__card:hover:not(:disabled):not(.is-chosen) {
|
|
27383
28229
|
border-color: var(--color-border-strong);
|
|
27384
28230
|
}
|
|
27385
28231
|
|
|
27386
28232
|
.crewlet-theme-gallery__card.is-chosen {
|
|
27387
|
-
border-color: var(--color-
|
|
28233
|
+
border-color: var(--color-border-selected);
|
|
28234
|
+
background: var(--color-surface-selected);
|
|
27388
28235
|
}
|
|
27389
28236
|
|
|
27390
28237
|
/* The ring is drawn OVER the border, inset by its width, never a second line outside it. */
|
|
@@ -27398,6 +28245,19 @@ b.crewlet-switcher__match {
|
|
|
27398
28245
|
opacity: 0.5;
|
|
27399
28246
|
}
|
|
27400
28247
|
|
|
28248
|
+
.crewlet-theme-gallery__label {
|
|
28249
|
+
display: flex;
|
|
28250
|
+
align-items: center;
|
|
28251
|
+
gap: var(--spacing-1);
|
|
28252
|
+
min-width: 0;
|
|
28253
|
+
}
|
|
28254
|
+
|
|
28255
|
+
.crewlet-theme-gallery__check {
|
|
28256
|
+
flex: none;
|
|
28257
|
+
margin-inline-start: auto;
|
|
28258
|
+
color: var(--color-brand-accent-ink);
|
|
28259
|
+
}
|
|
28260
|
+
|
|
27401
28261
|
.crewlet-theme-gallery__name {
|
|
27402
28262
|
overflow: hidden;
|
|
27403
28263
|
font-size: var(--font-size-xs);
|
|
@@ -27687,7 +28547,7 @@ b.crewlet-switcher__match {
|
|
|
27687
28547
|
}
|
|
27688
28548
|
|
|
27689
28549
|
|
|
27690
|
-
/* TimeWindowPicker-
|
|
28550
|
+
/* TimeWindowPicker-DEFDV77Z.css */
|
|
27691
28551
|
/*
|
|
27692
28552
|
* TimeWindowPicker: one trigger over one panel.
|
|
27693
28553
|
*
|
|
@@ -27737,10 +28597,17 @@ b.crewlet-switcher__match {
|
|
|
27737
28597
|
*/
|
|
27738
28598
|
.crewlet-time-window:focus-visible,
|
|
27739
28599
|
.crewlet-time-window.is-open {
|
|
27740
|
-
outline:
|
|
28600
|
+
outline: 2px solid var(--color-focus);
|
|
27741
28601
|
outline-offset: -1px;
|
|
27742
28602
|
}
|
|
27743
28603
|
|
|
28604
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
28605
|
+
:root[data-crewlet-focus='pointer'] .crewlet-time-window:focus-visible,
|
|
28606
|
+
:root[data-crewlet-focus='pointer'] .crewlet-time-window.is-open {
|
|
28607
|
+
outline-width: 1px;
|
|
28608
|
+
outline-color: var(--color-border-selected);
|
|
28609
|
+
}
|
|
28610
|
+
|
|
27744
28611
|
.crewlet-time-window.is-disabled,
|
|
27745
28612
|
.crewlet-time-window:disabled {
|
|
27746
28613
|
opacity: 0.55;
|
|
@@ -28008,10 +28875,16 @@ svg.crewlet-time-window__tick {
|
|
|
28008
28875
|
* own boundary (see Input.css), keyed on the box's own input.
|
|
28009
28876
|
*/
|
|
28010
28877
|
.crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
|
|
28011
|
-
outline:
|
|
28878
|
+
outline: 2px solid var(--color-focus);
|
|
28012
28879
|
outline-offset: -1px;
|
|
28013
28880
|
}
|
|
28014
28881
|
|
|
28882
|
+
/* Narrowed and tinted for a pointer, as the text box's ring is. See Input.css. */
|
|
28883
|
+
:root[data-crewlet-focus='pointer'] .crewlet-time-window__masked:has(.crewlet-time-window__masked-input:focus-visible) {
|
|
28884
|
+
outline-width: 1px;
|
|
28885
|
+
outline-color: var(--color-border-selected);
|
|
28886
|
+
}
|
|
28887
|
+
|
|
28015
28888
|
.crewlet-time-window__masked-input {
|
|
28016
28889
|
min-width: 0;
|
|
28017
28890
|
/* The `size` attribute the component sets is what holds the width open in
|