@crewlethq/ui 0.32.0 → 0.34.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 +149 -5
- package/dist/AccessDeniedCard/AccessDeniedCard.d.ts +5 -0
- package/dist/AccessDeniedCard/index.js +1 -5
- package/dist/AccessDeniedCard-QVNDMT46.css +8 -0
- package/dist/AppShell/index.js +4 -4
- package/dist/{AppShell-GCM4TDVY.css → AppShell-JTSEOA57.css} +3 -1
- package/dist/ArrangeGroup/ArrangeGroup.d.ts +16 -1
- package/dist/ArrangeGroup/index.d.ts +1 -1
- package/dist/ArrangeGroup/index.js +1 -1
- package/dist/{ArrangeGroup-GY5YMP6E.css → ArrangeGroup-KRWWOJKR.css} +43 -0
- package/dist/ArrangeList/index.js +2 -2
- package/dist/ArtifactBar/index.js +14 -12
- package/dist/{ArtifactBar-MLMJHWY6.css → ArtifactBar-C462VD4C.css} +8 -3
- package/dist/ArtifactCard/ArtifactCard.d.ts +64 -6
- package/dist/ArtifactCard/index.d.ts +2 -2
- package/dist/ArtifactCard/index.js +6 -4
- package/dist/ArtifactCard-XHRLAL7C.css +289 -0
- package/dist/ArtifactCover/index.js +8 -6
- package/dist/ArtifactIcon/index.js +7 -5
- package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +53 -0
- package/dist/ArtifactKindIllustration/index.d.ts +3 -0
- package/dist/ArtifactKindIllustration/index.js +3 -0
- package/dist/ArtifactKindIllustration-4NG6IE3C.css +211 -0
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +6 -2
- package/dist/ArtifactPanel/index.js +1 -1
- package/dist/{ArtifactPanel-YFXT5O77.css → ArtifactPanel-HW3SU7CP.css} +25 -7
- package/dist/Avatar/Avatar.d.ts +6 -4
- package/dist/Avatar/index.js +2 -2
- package/dist/AvatarPicker/index.js +8 -8
- package/dist/Callout/index.js +1 -1
- package/dist/{Callout-SXXK4B5R.css → Callout-ZAVG3P66.css} +46 -6
- package/dist/Canvas/Canvas.d.ts +33 -2
- package/dist/Canvas/index.d.ts +1 -1
- package/dist/Canvas/index.js +4 -4
- package/dist/{Canvas-LRVNW7XN.css → Canvas-VUG2HLZK.css} +23 -0
- package/dist/CanvasBoard/CanvasBoard.d.ts +38 -3
- package/dist/CanvasBoard/budget.d.ts +9 -3
- package/dist/CanvasBoard/index.d.ts +2 -2
- package/dist/CanvasBoard/index.js +7 -7
- package/dist/{CanvasBoard-MBZVBWDO.css → CanvasBoard-5NNSKY6A.css} +127 -6
- package/dist/CanvasToolbar/index.js +5 -5
- package/dist/{CanvasToolbar-AE5MXH7T.css → CanvasToolbar-EM5EVZED.css} +4 -2
- package/dist/ChangeMark/index.js +4 -4
- package/dist/CharacterPicker/index.js +2 -2
- package/dist/Charts/ActivityStrip.d.ts +16 -1
- package/dist/Charts/BarList.d.ts +6 -0
- package/dist/Charts/ChartEmpty.d.ts +33 -0
- package/dist/Charts/Legend.d.ts +6 -0
- package/dist/Charts/StackedBar.d.ts +4 -1
- package/dist/Charts/StackedColumns.d.ts +14 -3
- package/dist/Charts/TimeSeries.d.ts +11 -1
- package/dist/Charts/index.d.ts +2 -0
- package/dist/Charts/index.js +1 -1
- package/dist/{Charts-RY4JN5FC.css → Charts-MBJG72BS.css} +140 -16
- package/dist/Checkbox/index.js +1 -1
- package/dist/{Checkbox-5UORUG3F.css → Checkbox-ALWG3WV2.css} +11 -0
- package/dist/CommandPalette/index.js +3 -3
- package/dist/{CommandPalette-HBTNKHZQ.css → CommandPalette-7CFGVBND.css} +4 -0
- package/dist/CommentThread/index.js +5 -5
- package/dist/Container/index.js +1 -1
- package/dist/{Container-3TSKMGNI.css → Container-34BAKG7B.css} +3 -1
- package/dist/{DashboardCover-RMINBODB.css → DashboardCover-KYGYMRKW.css} +42 -9
- package/dist/DataTable/index.js +5 -5
- package/dist/{DataTable-WZK3V62B.css → DataTable-NL2YWAIA.css} +4 -1
- package/dist/DataView/index.js +8 -8
- package/dist/DateTimePicker/index.js +3 -3
- package/dist/DocTabsEditor/DocTabsEditor.d.ts +34 -21
- package/dist/DocTabsEditor/index.js +4 -1
- package/dist/DocTabsEditor-4M452LNS.css +189 -0
- package/dist/Document/Document.d.ts +18 -1
- package/dist/Document/index.d.ts +2 -2
- package/dist/Document/index.js +1 -1
- package/dist/{Document-G3YTZIUL.css → Document-JUGCSQ4L.css} +78 -5
- package/dist/EditingStatus/index.js +1 -1
- package/dist/{EditingStatus-L6THUAN7.css → EditingStatus-NNA2CKIL.css} +17 -4
- package/dist/{Editor-YWBUJAQU.js → Editor-UUZ7XKCU.js} +5 -5
- package/dist/EntityChip/index.js +3 -3
- package/dist/FactList/index.js +3 -3
- package/dist/FollowBanner/index.js +3 -3
- package/dist/Fullscreen/index.d.ts +1 -0
- package/dist/Fullscreen/index.js +1 -1
- package/dist/Fullscreen/useIdle.d.ts +16 -0
- package/dist/HuePicker/index.js +3 -3
- package/dist/ImageUpload/index.js +3 -3
- package/dist/Layer/index.d.ts +1 -1
- package/dist/Layer/index.js +1 -1
- package/dist/Layer/place.d.ts +18 -0
- package/dist/LayersList/LayersList.d.ts +57 -0
- package/dist/LayersList/index.d.ts +3 -0
- package/dist/LayersList/index.js +3 -0
- package/dist/LayersList-NQZEIPZB.css +82 -0
- package/dist/LinkInterstitial/index.js +4 -4
- package/dist/ListInput/index.js +1 -1
- package/dist/LivePreview/LivePreview.d.ts +83 -0
- package/dist/LivePreview/budget.d.ts +50 -0
- package/dist/LivePreview/index.d.ts +5 -0
- package/dist/LivePreview/index.js +2 -0
- package/dist/LivePreview-SRO7KHO4.css +65 -0
- package/dist/Markdown/index.js +1 -1
- package/dist/MarkdownEditor/index.js +5 -5
- package/dist/MediaMatch/index.d.ts +1 -0
- package/dist/MediaMatch/index.js +1 -0
- package/dist/MediaMatch/useMediaMatch.d.ts +19 -0
- package/dist/Menu/index.js +2 -2
- package/dist/MergeConflicts/index.js +4 -4
- package/dist/Modal/index.js +2 -2
- package/dist/{Modal-XOSV6FAH.css → Modal-7MWRCWAI.css} +30 -0
- package/dist/Note/index.js +1 -1
- package/dist/{Note-ONSKKTOA.css → Note-WI5MLZOO.css} +13 -0
- package/dist/OrgLabel/index.js +3 -3
- package/dist/OrgNode/index.js +4 -4
- package/dist/OrgTable/index.js +7 -7
- package/dist/PeopleRail/index.js +3 -3
- package/dist/Popover/index.js +2 -2
- package/dist/PresenceStack/index.js +3 -3
- package/dist/{PresenceStack-QSXQJND5.css → PresenceStack-FJJQVH74.css} +11 -3
- package/dist/PresenterView/PresenterView.d.ts +3 -0
- package/dist/PresenterView/index.js +5 -3
- package/dist/PresenterView-T3EXIQ5S.css +147 -0
- package/dist/Principal/index.js +3 -3
- package/dist/PrincipalPicker/index.js +4 -4
- package/dist/RichEditor/index.js +5 -5
- package/dist/RichEditor/schema.d.ts +1 -1
- package/dist/RichEditorMarkdown/index.js +3 -3
- package/dist/SandboxedFrame/SandboxedFrame.d.ts +44 -2
- package/dist/SandboxedFrame/index.d.ts +2 -2
- package/dist/SandboxedFrame/index.js +3 -3
- package/dist/SandboxedFrame-P5NASXB7.css +72 -0
- package/dist/Section/index.js +1 -1
- package/dist/{Section-QR3ILQVK.css → Section-O5AHGSOG.css} +28 -5
- package/dist/SegmentedControl/index.js +3 -3
- package/dist/Select/Select.d.ts +10 -0
- package/dist/Select/index.d.ts +1 -1
- package/dist/Select/index.js +2 -2
- package/dist/{Select-2P7AWUE4.css → Select-A54YS5EP.css} +29 -0
- package/dist/ShareDialog/ShareDialog.d.ts +10 -0
- package/dist/ShareDialog/index.js +9 -9
- package/dist/{ShareDialog-YZ4F37MW.css → ShareDialog-4QDCBWMH.css} +12 -0
- package/dist/SheetGrid/SheetGrid.d.ts +7 -3
- package/dist/SheetGrid/index.js +8 -8
- package/dist/{SheetGrid-J3TKKXZL.css → SheetGrid-GDPCCZ4V.css} +154 -14
- package/dist/SheetModel/fit.d.ts +34 -0
- package/dist/SheetModel/index.d.ts +1 -0
- package/dist/SheetModel/index.js +1 -1
- package/dist/SheetModel/labels.d.ts +1 -1
- package/dist/Shortcut/index.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts +2 -1
- package/dist/Skeleton/index.js +1 -1
- package/dist/SlideCompare/SlideCompare.d.ts +6 -1
- package/dist/SlideCompare/index.js +3 -3
- package/dist/{SlideCompare-MGM3U2ME.css → SlideCompare-HTCMPQFY.css} +36 -3
- package/dist/SlideFilmstrip/SlideFilmstrip.d.ts +14 -3
- package/dist/SlideFilmstrip/index.js +3 -3
- package/dist/{SlideFilmstrip-BCLNAHFX.css → SlideFilmstrip-5U6Z55GS.css} +63 -2
- package/dist/SlideGrid/index.js +3 -3
- package/dist/{SlideGrid-RT6QEQEE.css → SlideGrid-S4LTJ4UU.css} +9 -5
- package/dist/SlideNav/SlideNav.d.ts +49 -0
- package/dist/SlideNav/index.d.ts +3 -0
- package/dist/SlideNav/index.js +4 -0
- package/dist/SlideNav-BLFJF6AH.css +53 -0
- package/dist/SlideStage/SlideStage.d.ts +9 -1
- package/dist/SlideStage/index.js +2 -2
- package/dist/{SlideStage-KGRRALXR.css → SlideStage-S2FISF4C.css} +23 -0
- package/dist/StatCard/StatCard.d.ts +16 -1
- package/dist/StatCard/index.js +1 -1
- package/dist/{StatCard-KPAFD4E2.css → StatCard-4T7TMWMN.css} +40 -13
- package/dist/Switcher/index.js +6 -6
- package/dist/TableCells/index.js +3 -3
- package/dist/Tabs/Tabs.d.ts +21 -4
- package/dist/Tabs/index.js +1 -1
- package/dist/{Tabs-CJGO35BH.css → Tabs-MMZXV5EF.css} +9 -8
- package/dist/TagsInput/index.js +1 -1
- package/dist/ThemeSwitcher/index.js +4 -4
- package/dist/TimeWindowPicker/index.js +4 -4
- package/dist/Toaster/index.js +2 -2
- package/dist/{Toaster-EOOOTSJT.css → Toaster-C6BQ7L6I.css} +10 -1
- package/dist/Toolbar/index.js +1 -1
- package/dist/Tooltip/Tooltip.d.ts +12 -1
- package/dist/Tooltip/index.d.ts +1 -1
- package/dist/Tooltip/index.js +2 -2
- package/dist/TreeCanvas/index.js +5 -5
- package/dist/TreeGrid/index.js +3 -3
- package/dist/VersionCompare/index.js +4 -4
- package/dist/VersionTimeline/index.js +4 -4
- package/dist/WidgetFrame/WidgetFrame.d.ts +8 -1
- package/dist/WidgetFrame/index.js +2 -2
- package/dist/{WidgetFrame-LRZIL62O.css → WidgetFrame-BTFW3CRK.css} +49 -5
- package/dist/{chunk-WJDQ7XQA.js → chunk-2QEDJSJC.js} +1 -1
- package/dist/{chunk-VYDFB6PJ.js → chunk-356JNSER.js} +50 -17
- package/dist/{chunk-2HIOJ4YZ.js → chunk-3EB2AV3H.js} +2 -3
- package/dist/{chunk-ODT5H4MN.js → chunk-3LYWD3BO.js} +2 -2
- package/dist/{chunk-OTN35CI4.js → chunk-3P4Y5RX6.js} +18 -6
- package/dist/{chunk-FAQGGX2Z.js → chunk-3TFDQLW3.js} +1 -1
- package/dist/{chunk-E6EWK5YY.js → chunk-3Y56GQPM.js} +3 -3
- package/dist/{chunk-A4E5YLXO.js → chunk-4B6LSFDS.js} +1 -1
- package/dist/{chunk-UAN5NE7M.js → chunk-5AQBPHZD.js} +1 -1
- package/dist/{chunk-CJKMURZO.js → chunk-5SZGKSGL.js} +1 -1
- package/dist/chunk-6VOS2GMB.js +54 -0
- package/dist/{chunk-QWOPX2MN.js → chunk-6ZJ3N7QI.js} +7 -5
- package/dist/{chunk-3ZAFJ4GK.js → chunk-7Q7WDXHG.js} +4 -4
- package/dist/{chunk-QH3AKP2N.js → chunk-AC22RZKC.js} +2 -2
- package/dist/{chunk-UZ6MA2V6.js → chunk-AORVEG5V.js} +2 -2
- package/dist/{chunk-ZITJKF6Z.js → chunk-AYB6AYNH.js} +1 -1
- package/dist/{chunk-FC4YTTFJ.js → chunk-BQ7AKL2N.js} +5 -5
- package/dist/{chunk-Y5NQ2LMS.js → chunk-BY4N65PM.js} +1 -1
- package/dist/{chunk-YFW4MTK4.js → chunk-C7DKX453.js} +1 -1
- package/dist/{chunk-RCQXUT5K.js → chunk-CCAXYHQS.js} +1 -1
- package/dist/{chunk-JQLTG4KH.js → chunk-CCLNGVCM.js} +62 -51
- package/dist/{chunk-6AH2XJ3Q.js → chunk-CFAJP777.js} +3 -3
- package/dist/{chunk-4KP4RC3O.js → chunk-CI3VPIJN.js} +1 -1
- package/dist/{chunk-7T42VQQT.js → chunk-CPEPST4S.js} +1 -1
- package/dist/{chunk-AAOH2P6Y.js → chunk-DFK5EQTU.js} +5 -3
- package/dist/{chunk-V5IGUXMZ.js → chunk-E4NNGC6X.js} +4 -4
- package/dist/{chunk-TGYDROIB.js → chunk-EBCHVFCS.js} +4 -4
- package/dist/{chunk-LWXRD6L6.js → chunk-EWAFN2IU.js} +118 -27
- package/dist/{chunk-YDBC4DNW.js → chunk-FWYHRU7M.js} +1 -1
- package/dist/{chunk-HVNTQ36V.js → chunk-GMU6SQ6B.js} +4 -4
- package/dist/{chunk-LIXSV5YI.js → chunk-GPHWCK7M.js} +1 -1
- package/dist/{chunk-UQHKFF2N.js → chunk-GPWJCP3U.js} +1 -1
- package/dist/{chunk-77DRMDXR.js → chunk-HG5VF3TZ.js} +192 -67
- package/dist/{chunk-QVE4GJAT.js → chunk-HJO4WCH6.js} +1 -1
- package/dist/{chunk-JI5AVQLA.js → chunk-HOIZ6MIS.js} +1 -1
- package/dist/{chunk-I3BSQUKN.js → chunk-HUVG2FFT.js} +1 -1
- package/dist/{chunk-VS3KOOOL.js → chunk-ILAEBSLJ.js} +3 -3
- package/dist/{chunk-P4BOXB6E.js → chunk-IUD5VA2Z.js} +6 -7
- package/dist/{chunk-GR55WT4R.js → chunk-IYO2N5ZH.js} +2 -2
- package/dist/{chunk-RWA4H2TV.js → chunk-J6ON5SYE.js} +1 -1
- package/dist/{chunk-AMNN4WDX.js → chunk-JBUMD6DS.js} +2 -2
- package/dist/{chunk-BWRGFKJP.js → chunk-K3IJQNB7.js} +2 -3
- package/dist/{chunk-LFNUH4GY.js → chunk-K4VP6ZKE.js} +1 -1
- package/dist/{chunk-ZR5VN5IV.js → chunk-KD2IRYCT.js} +2 -2
- package/dist/chunk-KF6YGL4B.js +160 -0
- package/dist/{chunk-SKOYC2CF.js → chunk-KK5OYNAF.js} +2 -1
- package/dist/{chunk-UB7TJEKZ.js → chunk-KV3ODJXH.js} +6 -7
- package/dist/chunk-LL5AFXU7.js +96 -0
- package/dist/{chunk-VYOKRN2I.js → chunk-LM3ISVJA.js} +1 -1
- package/dist/{chunk-E6CR5PEV.js → chunk-LV4APO72.js} +8 -2
- package/dist/{chunk-B4EBHPK3.js → chunk-M5KZX5JE.js} +9 -2
- package/dist/{chunk-HMPFGIWM.js → chunk-OMV5W53A.js} +10 -1
- package/dist/chunk-ONL54WMH.js +55 -0
- package/dist/{chunk-AKEZ3G5V.js → chunk-ONQKKHON.js} +1 -1
- package/dist/{chunk-LZHLSQYK.js → chunk-OOWPSBIS.js} +2 -2
- package/dist/{chunk-4KWOKX2B.js → chunk-OSKJZNBT.js} +1 -1
- package/dist/{chunk-4JUKWWUD.js → chunk-PLDUNXAO.js} +1 -1
- package/dist/{chunk-EHQTPVV4.js → chunk-PLTCDSTU.js} +1 -1
- package/dist/{chunk-5OM447RW.js → chunk-PZKHBB7D.js} +1 -1
- package/dist/{chunk-VEB5ERRE.js → chunk-QWNVSR6G.js} +2 -2
- package/dist/{chunk-IG75YMUN.js → chunk-RTPQDNW3.js} +1 -1
- package/dist/{chunk-YEKYVJQR.js → chunk-SGHIAGPR.js} +2 -2
- package/dist/{chunk-SVSCLHHI.js → chunk-SZZRIHGT.js} +1 -1
- package/dist/{chunk-EBNI36UQ.js → chunk-T46NR3WP.js} +3 -3
- package/dist/{chunk-FPS3JIPQ.js → chunk-TC7DJTXI.js} +1 -1
- package/dist/{chunk-W5J7R5EB.js → chunk-TEUQWOWZ.js} +1 -1
- package/dist/chunk-THROPJZC.js +115 -0
- package/dist/{chunk-IDBHX5SR.js → chunk-TRQCHF2F.js} +1 -1
- package/dist/{chunk-M3LUNN7F.js → chunk-TYKQ33CL.js} +13 -2
- package/dist/chunk-UDQW6UK7.js +129 -0
- package/dist/{chunk-WTNUVQVI.js → chunk-UHJQDFKQ.js} +1 -1
- package/dist/{chunk-VVRL27HM.js → chunk-ULPL26BU.js} +2 -2
- package/dist/{chunk-EBJREOKS.js → chunk-UXXJDIYE.js} +4 -4
- package/dist/{chunk-5LUI3WQP.js → chunk-V43UVX4H.js} +1 -1
- package/dist/{chunk-W4XYY73O.js → chunk-VHZ3AXJD.js} +1 -1
- package/dist/{chunk-NHBP2XS5.js → chunk-VI5FWDZW.js} +51 -3
- package/dist/{chunk-HJEVSQN6.js → chunk-VL6CUNSX.js} +11 -5
- package/dist/{chunk-XDTYBF2F.js → chunk-W5XCNEZC.js} +39 -1
- package/dist/{chunk-LDJ3J4TQ.js → chunk-WGD2HX2A.js} +1 -1
- package/dist/{chunk-FQCLKD7U.js → chunk-WKEPORNM.js} +1 -1
- package/dist/{chunk-PJD2KFHX.js → chunk-WPX6A5BV.js} +38 -13
- package/dist/{chunk-I3KKZ2O3.js → chunk-XEGZHHRH.js} +45 -36
- package/dist/{chunk-IKB6HFGK.js → chunk-XO7PUL4F.js} +6 -4
- package/dist/chunk-XTOVADJU.js +170 -0
- package/dist/chunk-XV32RKQZ.js +142 -0
- package/dist/{chunk-TBMDMXEX.js → chunk-YA3AWELW.js} +1 -1
- package/dist/{chunk-HVIX5ECM.js → chunk-YEVG2X5R.js} +1 -1
- package/dist/chunk-YZFLH463.js +215 -0
- package/dist/generated/index.d.ts +5 -0
- package/dist/generated/index.js +112 -108
- package/dist/index.js +112 -108
- package/dist/styles.css +1982 -228
- package/package.json +3 -3
- package/dist/AccessDeniedCard-WXM5DBDZ.css +0 -8
- package/dist/ArtifactCard-EXVAEBV6.css +0 -109
- package/dist/DocTabsEditor-RCOWHX5J.css +0 -78
- package/dist/PresenterView-T2C6ZZ3N.css +0 -103
- package/dist/SandboxedFrame-L6HBQZCD.css +0 -50
- package/dist/chunk-CRKFL423.js +0 -74
- package/dist/chunk-GOSQXEZU.js +0 -102
- package/dist/chunk-MBNFJSZS.js +0 -107
- package/dist/chunk-RV7SZAHR.js +0 -105
- package/dist/chunk-UZ7ZUSLH.js +0 -179
- package/dist/utils/useMediaMatch.d.ts +0 -12
- /package/dist/{chunk-TF2P3OPS.js → chunk-YCARLYI6.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/* AccessDeniedCard-
|
|
2
|
-
/*
|
|
3
|
-
|
|
1
|
+
/* AccessDeniedCard-QVNDMT46.css */
|
|
2
|
+
/* One empty state and nothing else, at a reading width, so a refusal in a
|
|
3
|
+
wide viewer body reads as one sentence rather than a banner. */
|
|
4
4
|
|
|
5
5
|
.crewlet-access-denied-card {
|
|
6
6
|
width: 100%;
|
|
@@ -548,7 +548,7 @@
|
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
|
|
551
|
-
/* AppShell-
|
|
551
|
+
/* AppShell-JTSEOA57.css */
|
|
552
552
|
/*
|
|
553
553
|
* The application frame: a rail on the FRAME, and the screen on a SHEET that
|
|
554
554
|
* floats beside it.
|
|
@@ -1161,8 +1161,10 @@
|
|
|
1161
1161
|
display: inline-flex;
|
|
1162
1162
|
}
|
|
1163
1163
|
|
|
1164
|
+
/* THE TOP BAR'S GUTTER, 16px: the content's 12px stood every page's first
|
|
1165
|
+
line 4px left of the title and the controls over it. */
|
|
1164
1166
|
.crewlet-app-shell__content {
|
|
1165
|
-
padding: var(--spacing-4) var(--spacing-
|
|
1167
|
+
padding: var(--spacing-4) var(--spacing-4) var(--spacing-9);
|
|
1166
1168
|
}
|
|
1167
1169
|
}
|
|
1168
1170
|
|
|
@@ -1727,7 +1729,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1727
1729
|
}
|
|
1728
1730
|
|
|
1729
1731
|
|
|
1730
|
-
/* ArrangeGroup-
|
|
1732
|
+
/* ArrangeGroup-KRWWOJKR.css */
|
|
1731
1733
|
/*
|
|
1732
1734
|
* ArrangeGroup: a titled band of blocks. The hue is the header's; the body
|
|
1733
1735
|
* stays the page's ground, so the cards inside keep their own contrast.
|
|
@@ -1886,6 +1888,49 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1886
1888
|
pointer-events: none;
|
|
1887
1889
|
}
|
|
1888
1890
|
|
|
1891
|
+
/*
|
|
1892
|
+
* THE SECTION VARIANT: a quiet header on the page's ground, over a hairline
|
|
1893
|
+
* in the group's hue (the default border with none), and the blocks
|
|
1894
|
+
* on the page's grid with no inset of their own. The name is a card title's
|
|
1895
|
+
* step and ink, the chevron the quiet ink, and the count its chip.
|
|
1896
|
+
*/
|
|
1897
|
+
.crewlet-arrange-group--section {
|
|
1898
|
+
border: 0;
|
|
1899
|
+
border-radius: 0;
|
|
1900
|
+
background: none;
|
|
1901
|
+
overflow: visible;
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
.crewlet-arrange-group--section .crewlet-arrange-group__head {
|
|
1905
|
+
min-height: 0;
|
|
1906
|
+
padding: 0 0 var(--spacing-2);
|
|
1907
|
+
border-bottom: 1px solid var(--crewlet-arrange-group-line);
|
|
1908
|
+
background: none;
|
|
1909
|
+
}
|
|
1910
|
+
|
|
1911
|
+
.crewlet-arrange-group--section.is-collapsed .crewlet-arrange-group__head {
|
|
1912
|
+
border-bottom-color: var(--crewlet-arrange-group-line);
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
/* The chevron stands on the page's edge, its hover reaching past it. */
|
|
1916
|
+
.crewlet-arrange-group--section .crewlet-arrange-group__toggle {
|
|
1917
|
+
min-height: var(--size-control-sm);
|
|
1918
|
+
margin-inline-start: calc(var(--spacing-1) * -1);
|
|
1919
|
+
padding: 0 var(--spacing-1);
|
|
1920
|
+
color: var(--color-text-tertiary);
|
|
1921
|
+
}
|
|
1922
|
+
|
|
1923
|
+
.crewlet-arrange-group--section .crewlet-arrange-group__title {
|
|
1924
|
+
font-size: var(--font-size-sm);
|
|
1925
|
+
letter-spacing: var(--font-letter-spacing-normal);
|
|
1926
|
+
color: var(--color-text-primary);
|
|
1927
|
+
}
|
|
1928
|
+
|
|
1929
|
+
.crewlet-arrange-group--section .crewlet-arrange-group__body {
|
|
1930
|
+
min-height: 0;
|
|
1931
|
+
padding: var(--spacing-3) 0 0;
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1889
1934
|
@media (prefers-reduced-motion: reduce) {
|
|
1890
1935
|
.crewlet-arrange-group__chevron,
|
|
1891
1936
|
.crewlet-arrange-group__title-field {
|
|
@@ -1996,7 +2041,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
1996
2041
|
}
|
|
1997
2042
|
|
|
1998
2043
|
|
|
1999
|
-
/* ArtifactBar-
|
|
2044
|
+
/* ArtifactBar-C462VD4C.css */
|
|
2000
2045
|
/*
|
|
2001
2046
|
* One row, one hairline under it, the height of a large row. The lead (the
|
|
2002
2047
|
* way back, the glyph, the title, the version) takes what the end leaves it
|
|
@@ -2024,7 +2069,10 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2024
2069
|
display: flex;
|
|
2025
2070
|
align-items: center;
|
|
2026
2071
|
gap: var(--spacing-3);
|
|
2027
|
-
|
|
2072
|
+
/* THE SHELL'S TOP BAR'S HEIGHT, its hairline included: the bar stands in
|
|
2073
|
+
its place, and at a row's height of its own the line under it jumped by
|
|
2074
|
+
three pixels between the gallery and the artifact opened from it. */
|
|
2075
|
+
height: calc(var(--size-shell-topbar) - 1px);
|
|
2028
2076
|
padding: 0 var(--spacing-3);
|
|
2029
2077
|
min-width: 0;
|
|
2030
2078
|
}
|
|
@@ -2288,9 +2336,10 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2288
2336
|
}
|
|
2289
2337
|
|
|
2290
2338
|
@container crewlet-artifact-bar (width < 640px) {
|
|
2339
|
+
/* THE ROW KEEPS THE SHELL'S PHONE INSET, so the first glyph stands over
|
|
2340
|
+
the page's own gutter rather than eight pixels from the edge. */
|
|
2291
2341
|
.crewlet-artifact-bar__row {
|
|
2292
2342
|
gap: var(--spacing-1);
|
|
2293
|
-
padding: 0 var(--spacing-2);
|
|
2294
2343
|
}
|
|
2295
2344
|
|
|
2296
2345
|
/* The title has the row's room before the kind's glyph does: the glyph
|
|
@@ -2324,7 +2373,8 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2324
2373
|
height: var(--size-target-min);
|
|
2325
2374
|
padding: 0 var(--spacing-2);
|
|
2326
2375
|
border: 0;
|
|
2327
|
-
|
|
2376
|
+
/* A CONTROL'S CORNER, the one every bar control of its height takes. */
|
|
2377
|
+
border-radius: var(--radius-md);
|
|
2328
2378
|
background: var(--color-surface-subtle);
|
|
2329
2379
|
color: var(--color-text-secondary);
|
|
2330
2380
|
font-family: var(--font-family-sans);
|
|
@@ -2364,14 +2414,22 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2364
2414
|
}
|
|
2365
2415
|
|
|
2366
2416
|
|
|
2367
|
-
/* ArtifactCard-
|
|
2417
|
+
/* ArtifactCard-XHRLAL7C.css */
|
|
2368
2418
|
/*
|
|
2369
2419
|
* A card in a gallery: the preview on top at a fixed ratio, so a grid of them
|
|
2370
|
-
* lines up whatever each preview is,
|
|
2371
|
-
*
|
|
2420
|
+
* lines up whatever each preview is, the kind's badge over its foot, then the
|
|
2421
|
+
* title and one quiet line. `compact` is a row with the kind's glyph in place
|
|
2422
|
+
* of the preview, drawn on Card.
|
|
2372
2423
|
*/
|
|
2373
2424
|
|
|
2374
|
-
|
|
2425
|
+
/*
|
|
2426
|
+
* ON TOP OF CARD, so every rule that changes Card's own layout carries Card's
|
|
2427
|
+
* class too. The two sheets meet at equal weight and the bundle orders them
|
|
2428
|
+
* by file name, which puts this one first: `.crewlet-card` and
|
|
2429
|
+
* `.crewlet-card--p-none` then won, and the compact row was drawn as a
|
|
2430
|
+
* padless column with its glyph on a line of its own.
|
|
2431
|
+
*/
|
|
2432
|
+
.crewlet-card.crewlet-artifact-card {
|
|
2375
2433
|
display: flex;
|
|
2376
2434
|
flex-direction: column;
|
|
2377
2435
|
min-width: 0;
|
|
@@ -2380,24 +2438,13 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2380
2438
|
text-decoration: none;
|
|
2381
2439
|
}
|
|
2382
2440
|
|
|
2383
|
-
.crewlet-artifact-card--compact {
|
|
2441
|
+
.crewlet-card.crewlet-artifact-card--compact {
|
|
2384
2442
|
flex-direction: row;
|
|
2385
2443
|
align-items: flex-start;
|
|
2386
2444
|
gap: var(--spacing-3);
|
|
2387
2445
|
padding: var(--spacing-3);
|
|
2388
2446
|
}
|
|
2389
2447
|
|
|
2390
|
-
.crewlet-artifact-card__preview {
|
|
2391
|
-
display: flex;
|
|
2392
|
-
align-items: center;
|
|
2393
|
-
justify-content: center;
|
|
2394
|
-
aspect-ratio: 16 / 9;
|
|
2395
|
-
overflow: hidden;
|
|
2396
|
-
border-bottom: 1px solid var(--color-border-default);
|
|
2397
|
-
background: var(--color-surface-inset);
|
|
2398
|
-
color: var(--color-text-tertiary);
|
|
2399
|
-
}
|
|
2400
|
-
|
|
2401
2448
|
.crewlet-artifact-card__glyph {
|
|
2402
2449
|
display: inline-flex;
|
|
2403
2450
|
color: var(--color-text-tertiary);
|
|
@@ -2462,6 +2509,14 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2462
2509
|
min-width: 0;
|
|
2463
2510
|
}
|
|
2464
2511
|
|
|
2512
|
+
/* THE FACTS OF ONE LINE ARE A RUN, "Sheet · OPS · v12", each after the first
|
|
2513
|
+
opened by a quiet dot, so two short words never read as one phrase. */
|
|
2514
|
+
.crewlet-artifact-card__line > * + *::before {
|
|
2515
|
+
content: '·';
|
|
2516
|
+
margin-inline-end: var(--spacing-2);
|
|
2517
|
+
color: var(--color-text-tertiary);
|
|
2518
|
+
}
|
|
2519
|
+
|
|
2465
2520
|
.crewlet-artifact-card__owner,
|
|
2466
2521
|
.crewlet-artifact-card__presence {
|
|
2467
2522
|
display: inline-flex;
|
|
@@ -2475,6 +2530,181 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2475
2530
|
font-weight: var(--font-weight-medium);
|
|
2476
2531
|
}
|
|
2477
2532
|
|
|
2533
|
+
/* ---- the gallery card ---- */
|
|
2534
|
+
|
|
2535
|
+
/*
|
|
2536
|
+
* A SOFT PANE WITH A GENEROUS CORNER. The card is the card rung with its
|
|
2537
|
+
* hairline, rounded a step past a plain card's because the preview inside it
|
|
2538
|
+
* is a picture, and a picture in a tight corner reads as a screenshot pasted
|
|
2539
|
+
* into a box. Hover lifts the edge and the shadow, never the colour.
|
|
2540
|
+
*/
|
|
2541
|
+
.crewlet-artifact-card--card {
|
|
2542
|
+
position: relative;
|
|
2543
|
+
display: flex;
|
|
2544
|
+
flex-direction: column;
|
|
2545
|
+
min-width: 0;
|
|
2546
|
+
border: 1px solid var(--color-border-default);
|
|
2547
|
+
border-radius: var(--radius-xl);
|
|
2548
|
+
background: var(--color-surface-subtle);
|
|
2549
|
+
transition:
|
|
2550
|
+
border-color var(--motion-duration-base) var(--motion-easing-out),
|
|
2551
|
+
box-shadow var(--motion-duration-base) var(--motion-easing-out),
|
|
2552
|
+
transform var(--motion-duration-base) var(--motion-easing-out);
|
|
2553
|
+
}
|
|
2554
|
+
|
|
2555
|
+
.crewlet-artifact-card--card:hover {
|
|
2556
|
+
border-color: var(--color-border-hover);
|
|
2557
|
+
box-shadow: var(--shadow-card);
|
|
2558
|
+
transform: translateY(-1px);
|
|
2559
|
+
}
|
|
2560
|
+
|
|
2561
|
+
.crewlet-artifact-card--card:has(.crewlet-artifact-card__link:focus-visible) {
|
|
2562
|
+
outline: 2px solid var(--color-focus);
|
|
2563
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
.crewlet-artifact-card__link {
|
|
2567
|
+
display: flex;
|
|
2568
|
+
flex-direction: column;
|
|
2569
|
+
min-width: 0;
|
|
2570
|
+
border-radius: inherit;
|
|
2571
|
+
color: inherit;
|
|
2572
|
+
text-decoration: none;
|
|
2573
|
+
outline: none;
|
|
2574
|
+
}
|
|
2575
|
+
|
|
2576
|
+
.crewlet-artifact-card__preview {
|
|
2577
|
+
position: relative;
|
|
2578
|
+
display: flex;
|
|
2579
|
+
aspect-ratio: 16 / 9;
|
|
2580
|
+
overflow: hidden;
|
|
2581
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
2582
|
+
border-radius: var(--radius-xl) var(--radius-xl) 0 0;
|
|
2583
|
+
background: var(--color-surface-inset);
|
|
2584
|
+
}
|
|
2585
|
+
|
|
2586
|
+
.crewlet-artifact-card__preview > * {
|
|
2587
|
+
flex: 1 1 auto;
|
|
2588
|
+
min-width: 0;
|
|
2589
|
+
}
|
|
2590
|
+
|
|
2591
|
+
.crewlet-artifact-card--trashed .crewlet-artifact-card__preview > * {
|
|
2592
|
+
opacity: 0.5;
|
|
2593
|
+
filter: grayscale(1);
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2596
|
+
.crewlet-artifact-card--card .crewlet-artifact-card__body {
|
|
2597
|
+
gap: var(--spacing-1);
|
|
2598
|
+
padding: 0 var(--spacing-5) var(--spacing-5);
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
/*
|
|
2602
|
+
* THE KIND'S BADGE STANDS ON THE PREVIEW'S FOOT, half over the picture and
|
|
2603
|
+
* half over the card, the glyph in the kind's ink: what the artifact is, read
|
|
2604
|
+
* before its title, in the one place every card has it.
|
|
2605
|
+
*/
|
|
2606
|
+
.crewlet-artifact-card__badge {
|
|
2607
|
+
position: relative;
|
|
2608
|
+
display: inline-flex;
|
|
2609
|
+
flex: none;
|
|
2610
|
+
align-items: center;
|
|
2611
|
+
justify-content: center;
|
|
2612
|
+
align-self: flex-start;
|
|
2613
|
+
width: 40px;
|
|
2614
|
+
height: 40px;
|
|
2615
|
+
margin-top: -22px;
|
|
2616
|
+
margin-bottom: var(--spacing-2);
|
|
2617
|
+
border: 1px solid var(--color-border-default);
|
|
2618
|
+
border-radius: var(--radius-lg);
|
|
2619
|
+
background: var(--color-surface-background);
|
|
2620
|
+
box-shadow: var(--shadow-sm);
|
|
2621
|
+
color: var(--crewlet-kind-ink, var(--color-text-secondary));
|
|
2622
|
+
}
|
|
2623
|
+
|
|
2624
|
+
.crewlet-artifact-card--card .crewlet-artifact-card__title {
|
|
2625
|
+
font-size: var(--font-size-lg);
|
|
2626
|
+
font-weight: var(--font-weight-medium);
|
|
2627
|
+
line-height: 1.35;
|
|
2628
|
+
}
|
|
2629
|
+
|
|
2630
|
+
.crewlet-artifact-card--card .crewlet-artifact-card__facts {
|
|
2631
|
+
font-size: var(--font-size-sm);
|
|
2632
|
+
}
|
|
2633
|
+
|
|
2634
|
+
.crewlet-artifact-card__meta {
|
|
2635
|
+
flex-wrap: nowrap;
|
|
2636
|
+
white-space: nowrap;
|
|
2637
|
+
}
|
|
2638
|
+
|
|
2639
|
+
.crewlet-artifact-card__access {
|
|
2640
|
+
display: inline-flex;
|
|
2641
|
+
flex: none;
|
|
2642
|
+
align-items: center;
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2645
|
+
.crewlet-artifact-card__meta > .crewlet-artifact-card__owner {
|
|
2646
|
+
flex: 0 1 auto;
|
|
2647
|
+
overflow: hidden;
|
|
2648
|
+
}
|
|
2649
|
+
|
|
2650
|
+
.crewlet-artifact-card__owner-name {
|
|
2651
|
+
overflow: hidden;
|
|
2652
|
+
text-overflow: ellipsis;
|
|
2653
|
+
}
|
|
2654
|
+
|
|
2655
|
+
.crewlet-artifact-card__meta > :last-child {
|
|
2656
|
+
flex: none;
|
|
2657
|
+
}
|
|
2658
|
+
|
|
2659
|
+
/*
|
|
2660
|
+
* THE CARD'S OWN CONTROLS, over the preview's top corner and outside the
|
|
2661
|
+
* link: hidden until the card is hovered or holds focus, so a gallery rests
|
|
2662
|
+
* as pictures, and always there on a screen with no hover.
|
|
2663
|
+
*/
|
|
2664
|
+
.crewlet-artifact-card__actions {
|
|
2665
|
+
position: absolute;
|
|
2666
|
+
top: var(--spacing-3);
|
|
2667
|
+
right: var(--spacing-3);
|
|
2668
|
+
display: inline-flex;
|
|
2669
|
+
gap: var(--spacing-1);
|
|
2670
|
+
border-radius: var(--radius-md);
|
|
2671
|
+
background: var(--color-surface-background);
|
|
2672
|
+
box-shadow: var(--shadow-sm);
|
|
2673
|
+
opacity: 0;
|
|
2674
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-out);
|
|
2675
|
+
}
|
|
2676
|
+
|
|
2677
|
+
.crewlet-artifact-card--card:hover .crewlet-artifact-card__actions,
|
|
2678
|
+
.crewlet-artifact-card--card:focus-within .crewlet-artifact-card__actions,
|
|
2679
|
+
.crewlet-artifact-card__actions:has([aria-expanded='true']) {
|
|
2680
|
+
opacity: 1;
|
|
2681
|
+
}
|
|
2682
|
+
|
|
2683
|
+
@media (hover: none) {
|
|
2684
|
+
.crewlet-artifact-card__actions {
|
|
2685
|
+
opacity: 1;
|
|
2686
|
+
}
|
|
2687
|
+
}
|
|
2688
|
+
|
|
2689
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2690
|
+
.crewlet-artifact-card--card,
|
|
2691
|
+
.crewlet-artifact-card__actions {
|
|
2692
|
+
transition: none;
|
|
2693
|
+
}
|
|
2694
|
+
|
|
2695
|
+
.crewlet-artifact-card--card:hover {
|
|
2696
|
+
transform: none;
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
|
|
2700
|
+
.crewlet-artifact-card--skeleton {
|
|
2701
|
+
pointer-events: none;
|
|
2702
|
+
}
|
|
2703
|
+
|
|
2704
|
+
.crewlet-artifact-card--skeleton .crewlet-artifact-card__badge {
|
|
2705
|
+
box-shadow: none;
|
|
2706
|
+
}
|
|
2707
|
+
|
|
2478
2708
|
|
|
2479
2709
|
/* ArtifactCover-D4MBEJ5H.css */
|
|
2480
2710
|
/* The frame every native cover shares (DocCover, SheetCover, DashboardCover):
|
|
@@ -2546,7 +2776,221 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2546
2776
|
}
|
|
2547
2777
|
|
|
2548
2778
|
|
|
2549
|
-
/*
|
|
2779
|
+
/* ArtifactKindIllustration-4NG6IE3C.css */
|
|
2780
|
+
/*
|
|
2781
|
+
* A kind's drawing, its tinted ground and the Make something new tile.
|
|
2782
|
+
*
|
|
2783
|
+
* Every colour is the kind's token, `--color-artifact-kind-<kind>` and its
|
|
2784
|
+
* Fill and Line steps, set once per kind on `--crewlet-kind-*` and read by
|
|
2785
|
+
* every rule below, so the drawing, the ground and the tile repaint together
|
|
2786
|
+
* with the theme.
|
|
2787
|
+
*/
|
|
2788
|
+
|
|
2789
|
+
.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); }
|
|
2790
|
+
.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); }
|
|
2791
|
+
.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); }
|
|
2792
|
+
.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); }
|
|
2793
|
+
.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); }
|
|
2794
|
+
.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); }
|
|
2795
|
+
|
|
2796
|
+
/* ---- the drawing ---- */
|
|
2797
|
+
|
|
2798
|
+
.crewlet-kind-illustration {
|
|
2799
|
+
display: block;
|
|
2800
|
+
width: 100%;
|
|
2801
|
+
height: 100%;
|
|
2802
|
+
overflow: visible;
|
|
2803
|
+
}
|
|
2804
|
+
|
|
2805
|
+
/* THE FOUR WEIGHTS, each the kind's hue at a fixed opacity: the body is a
|
|
2806
|
+
translucent pane with a hairline edge, lines are content, a soft block is
|
|
2807
|
+
a picture or a bar, and the mark is the one solid thing the eye lands on. */
|
|
2808
|
+
.crewlet-kind-illustration .b {
|
|
2809
|
+
fill: var(--crewlet-kind-hue);
|
|
2810
|
+
fill-opacity: 0.14;
|
|
2811
|
+
stroke: var(--crewlet-kind-hue);
|
|
2812
|
+
stroke-opacity: 0.5;
|
|
2813
|
+
stroke-width: 1.5;
|
|
2814
|
+
}
|
|
2815
|
+
|
|
2816
|
+
.crewlet-kind-illustration .l {
|
|
2817
|
+
fill: var(--crewlet-kind-hue);
|
|
2818
|
+
fill-opacity: 0.45;
|
|
2819
|
+
}
|
|
2820
|
+
|
|
2821
|
+
.crewlet-kind-illustration .s {
|
|
2822
|
+
fill: var(--crewlet-kind-hue);
|
|
2823
|
+
fill-opacity: 0.62;
|
|
2824
|
+
}
|
|
2825
|
+
|
|
2826
|
+
.crewlet-kind-illustration .m {
|
|
2827
|
+
fill: var(--crewlet-kind-hue);
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
/* A rule across the body (a window's bar, a grid's lines). */
|
|
2831
|
+
.crewlet-kind-illustration .r {
|
|
2832
|
+
fill: none;
|
|
2833
|
+
stroke: var(--crewlet-kind-hue);
|
|
2834
|
+
stroke-opacity: 0.3;
|
|
2835
|
+
stroke-width: 1.5;
|
|
2836
|
+
}
|
|
2837
|
+
|
|
2838
|
+
/* A stroke drawn as a glyph: the angle brackets of a page of code. */
|
|
2839
|
+
.crewlet-kind-illustration .k {
|
|
2840
|
+
fill: none;
|
|
2841
|
+
stroke: var(--crewlet-kind-hue);
|
|
2842
|
+
stroke-linecap: round;
|
|
2843
|
+
stroke-linejoin: round;
|
|
2844
|
+
stroke-width: 5;
|
|
2845
|
+
}
|
|
2846
|
+
|
|
2847
|
+
.crewlet-kind-illustration .k--soft {
|
|
2848
|
+
stroke-opacity: 0.55;
|
|
2849
|
+
}
|
|
2850
|
+
|
|
2851
|
+
/* Cut out of a solid mark in the ground's colour: a checkbox's tick. */
|
|
2852
|
+
.crewlet-kind-illustration .c {
|
|
2853
|
+
fill: none;
|
|
2854
|
+
stroke: var(--color-surface-background);
|
|
2855
|
+
stroke-linecap: round;
|
|
2856
|
+
stroke-linejoin: round;
|
|
2857
|
+
stroke-width: 1.4;
|
|
2858
|
+
}
|
|
2859
|
+
|
|
2860
|
+
.crewlet-kind-illustration .c--fill {
|
|
2861
|
+
fill: var(--crewlet-kind-hue);
|
|
2862
|
+
fill-opacity: 0.4;
|
|
2863
|
+
stroke: none;
|
|
2864
|
+
}
|
|
2865
|
+
|
|
2866
|
+
/* ---- the ground ---- */
|
|
2867
|
+
|
|
2868
|
+
/*
|
|
2869
|
+
* THE KIND'S FILL OVER THE CARD, brightest at the top and settling into the
|
|
2870
|
+
* card at the foot, the way light falls on a tinted pane: a flat fill read as
|
|
2871
|
+
* a coloured box, and a hue strong enough to read on its own fought the
|
|
2872
|
+
* previews beside it.
|
|
2873
|
+
*/
|
|
2874
|
+
.crewlet-kind-ground {
|
|
2875
|
+
display: flex;
|
|
2876
|
+
align-items: center;
|
|
2877
|
+
justify-content: center;
|
|
2878
|
+
box-sizing: border-box;
|
|
2879
|
+
width: 100%;
|
|
2880
|
+
height: 100%;
|
|
2881
|
+
padding: 8% 10%;
|
|
2882
|
+
background:
|
|
2883
|
+
linear-gradient(180deg, var(--crewlet-kind-fill) 0%, transparent 115%),
|
|
2884
|
+
var(--color-surface-subtle);
|
|
2885
|
+
}
|
|
2886
|
+
|
|
2887
|
+
.crewlet-kind-ground > .crewlet-kind-illustration {
|
|
2888
|
+
max-width: 12rem;
|
|
2889
|
+
max-height: 100%;
|
|
2890
|
+
}
|
|
2891
|
+
|
|
2892
|
+
/* ---- the tile ---- */
|
|
2893
|
+
|
|
2894
|
+
.crewlet-kind-tile {
|
|
2895
|
+
display: flex;
|
|
2896
|
+
flex-direction: column;
|
|
2897
|
+
gap: var(--spacing-2);
|
|
2898
|
+
min-width: 0;
|
|
2899
|
+
color: var(--color-text-primary);
|
|
2900
|
+
text-decoration: none;
|
|
2901
|
+
outline: none;
|
|
2902
|
+
}
|
|
2903
|
+
|
|
2904
|
+
/*
|
|
2905
|
+
* A FRAME AROUND A PANE: the tile is a hairline ring with the tinted ground
|
|
2906
|
+
* set inside it a few pixels in, one radius step tighter, so the pane reads
|
|
2907
|
+
* as sitting in a holder rather than as a coloured rectangle.
|
|
2908
|
+
*/
|
|
2909
|
+
.crewlet-kind-tile__frame {
|
|
2910
|
+
display: block;
|
|
2911
|
+
box-sizing: border-box;
|
|
2912
|
+
aspect-ratio: 4 / 3;
|
|
2913
|
+
padding: 5px;
|
|
2914
|
+
border: 1px solid var(--color-border-default);
|
|
2915
|
+
border-radius: var(--radius-2xl);
|
|
2916
|
+
background: var(--color-surface-subtle);
|
|
2917
|
+
transition:
|
|
2918
|
+
border-color var(--motion-duration-base) var(--motion-easing-out),
|
|
2919
|
+
box-shadow var(--motion-duration-base) var(--motion-easing-out);
|
|
2920
|
+
}
|
|
2921
|
+
|
|
2922
|
+
.crewlet-kind-tile__ground {
|
|
2923
|
+
border-radius: var(--radius-xl);
|
|
2924
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-line);
|
|
2925
|
+
overflow: hidden;
|
|
2926
|
+
}
|
|
2927
|
+
|
|
2928
|
+
.crewlet-kind-tile__ground > .crewlet-kind-illustration {
|
|
2929
|
+
transition: transform var(--motion-duration-base) var(--motion-easing-out);
|
|
2930
|
+
}
|
|
2931
|
+
|
|
2932
|
+
.crewlet-kind-tile__label {
|
|
2933
|
+
display: flex;
|
|
2934
|
+
align-items: center;
|
|
2935
|
+
gap: var(--spacing-2);
|
|
2936
|
+
min-width: 0;
|
|
2937
|
+
padding-inline: var(--spacing-1);
|
|
2938
|
+
}
|
|
2939
|
+
|
|
2940
|
+
.crewlet-kind-tile__name {
|
|
2941
|
+
overflow: hidden;
|
|
2942
|
+
font-size: var(--font-size-md);
|
|
2943
|
+
font-weight: var(--font-weight-medium);
|
|
2944
|
+
line-height: 1.3;
|
|
2945
|
+
text-overflow: ellipsis;
|
|
2946
|
+
white-space: nowrap;
|
|
2947
|
+
}
|
|
2948
|
+
|
|
2949
|
+
.crewlet-kind-tile__badge {
|
|
2950
|
+
flex: none;
|
|
2951
|
+
padding: 1px var(--spacing-2);
|
|
2952
|
+
border-radius: var(--radius-sm);
|
|
2953
|
+
background: var(--crewlet-kind-fill);
|
|
2954
|
+
color: var(--color-text-secondary);
|
|
2955
|
+
font-size: var(--font-size-xs);
|
|
2956
|
+
font-weight: var(--font-weight-medium);
|
|
2957
|
+
}
|
|
2958
|
+
|
|
2959
|
+
a.crewlet-kind-tile:hover .crewlet-kind-tile__frame {
|
|
2960
|
+
border-color: var(--color-border-hover);
|
|
2961
|
+
}
|
|
2962
|
+
|
|
2963
|
+
a.crewlet-kind-tile:hover .crewlet-kind-tile__ground > .crewlet-kind-illustration {
|
|
2964
|
+
transform: translateY(-2px) scale(1.03);
|
|
2965
|
+
}
|
|
2966
|
+
|
|
2967
|
+
.crewlet-kind-tile:focus-visible .crewlet-kind-tile__frame {
|
|
2968
|
+
outline: 2px solid var(--color-focus);
|
|
2969
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
2970
|
+
}
|
|
2971
|
+
|
|
2972
|
+
.crewlet-kind-tile--disabled {
|
|
2973
|
+
cursor: not-allowed;
|
|
2974
|
+
}
|
|
2975
|
+
|
|
2976
|
+
.crewlet-kind-tile--disabled .crewlet-kind-tile__ground,
|
|
2977
|
+
.crewlet-kind-tile--disabled .crewlet-kind-tile__name {
|
|
2978
|
+
opacity: 0.55;
|
|
2979
|
+
}
|
|
2980
|
+
|
|
2981
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2982
|
+
.crewlet-kind-tile__frame,
|
|
2983
|
+
.crewlet-kind-tile__ground > .crewlet-kind-illustration {
|
|
2984
|
+
transition: none;
|
|
2985
|
+
}
|
|
2986
|
+
|
|
2987
|
+
a.crewlet-kind-tile:hover .crewlet-kind-tile__ground > .crewlet-kind-illustration {
|
|
2988
|
+
transform: none;
|
|
2989
|
+
}
|
|
2990
|
+
}
|
|
2991
|
+
|
|
2992
|
+
|
|
2993
|
+
/* ArtifactPanel-HW3SU7CP.css */
|
|
2550
2994
|
/*
|
|
2551
2995
|
* The workspace is a row: the artifact's body, then at most one panel. The
|
|
2552
2996
|
* body scrolls itself, so a panel beside it stays in view however far the
|
|
@@ -2577,7 +3021,9 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2577
3021
|
}
|
|
2578
3022
|
|
|
2579
3023
|
.crewlet-artifact-panel {
|
|
2580
|
-
|
|
3024
|
+
/* THE TEXT WIDTH, every panel of facts, a list or a form: three widths for
|
|
3025
|
+
those moved the artifact's edge 80px between Details and History. */
|
|
3026
|
+
--crewlet-artifact-panel-width: 22.5rem;
|
|
2581
3027
|
display: flex;
|
|
2582
3028
|
flex: none;
|
|
2583
3029
|
flex-direction: column;
|
|
@@ -2587,10 +3033,6 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2587
3033
|
background: var(--color-surface-background);
|
|
2588
3034
|
}
|
|
2589
3035
|
|
|
2590
|
-
.crewlet-artifact-panel--sm {
|
|
2591
|
-
--crewlet-artifact-panel-width: 20rem;
|
|
2592
|
-
}
|
|
2593
|
-
|
|
2594
3036
|
.crewlet-artifact-panel--lg {
|
|
2595
3037
|
--crewlet-artifact-panel-width: 36rem;
|
|
2596
3038
|
}
|
|
@@ -2643,10 +3085,27 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2643
3085
|
gap: var(--spacing-1);
|
|
2644
3086
|
}
|
|
2645
3087
|
|
|
3088
|
+
/* THE BODY'S INSET IS PUBLISHED (--crewlet-artifact-panel-inset) for content
|
|
3089
|
+
that sticks to its scrollport: a sticky edge stops at the padding, so a
|
|
3090
|
+
foot with `bottom: 0` left a band under it that the content scrolled
|
|
3091
|
+
through; such a foot offsets itself by the inset to sit on the edge. */
|
|
2646
3092
|
.crewlet-artifact-panel__body {
|
|
3093
|
+
/* THE PANEL'S OWN MEASURE, so what it holds folds to the panel's width
|
|
3094
|
+
rather than the window's; and its sections head at the panel title's
|
|
3095
|
+
step, a level under it and never louder than it. */
|
|
3096
|
+
container: crewlet-artifact-panel / inline-size;
|
|
3097
|
+
--crewlet-section-title-size: var(--font-size-sm);
|
|
3098
|
+
--crewlet-artifact-panel-inset: var(--spacing-4);
|
|
3099
|
+
|
|
3100
|
+
/* A COLUMN, so content that should fit the panel rather than scroll it
|
|
3101
|
+
can: a child that sets `min-height: 0` shrinks to the room the body has
|
|
3102
|
+
(a sheet's rows, whose grid then scrolls itself), and every other child
|
|
3103
|
+
keeps its content's height and scrolls the body as before. */
|
|
3104
|
+
display: flex;
|
|
3105
|
+
flex-direction: column;
|
|
2647
3106
|
flex: 1 1 auto;
|
|
2648
3107
|
min-height: 0;
|
|
2649
|
-
padding: var(--
|
|
3108
|
+
padding: var(--crewlet-artifact-panel-inset);
|
|
2650
3109
|
overflow: auto;
|
|
2651
3110
|
overscroll-behavior: contain;
|
|
2652
3111
|
}
|
|
@@ -2660,7 +3119,10 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2660
3119
|
inset-inline-end: 0;
|
|
2661
3120
|
z-index: var(--z-index-overlay);
|
|
2662
3121
|
width: min(var(--crewlet-artifact-panel-width), 100%);
|
|
2663
|
-
|
|
3122
|
+
/* THE DRAWER'S LIFT, the shell's own rail drawer's: the large step falls
|
|
3123
|
+
below a box and left the panel's start edge reading as a cut through
|
|
3124
|
+
the artifact rather than a sheet over it. */
|
|
3125
|
+
box-shadow: var(--shadow-xl);
|
|
2664
3126
|
}
|
|
2665
3127
|
|
|
2666
3128
|
.crewlet-artifact-panel[data-expanded] {
|
|
@@ -4027,7 +4489,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4027
4489
|
}
|
|
4028
4490
|
|
|
4029
4491
|
|
|
4030
|
-
/* Callout-
|
|
4492
|
+
/* Callout-ZAVG3P66.css */
|
|
4031
4493
|
/*
|
|
4032
4494
|
* The callout: a status that stays in the content flow.
|
|
4033
4495
|
*
|
|
@@ -4052,8 +4514,15 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4052
4514
|
*/
|
|
4053
4515
|
--crewlet-callout-line: transparent;
|
|
4054
4516
|
|
|
4055
|
-
|
|
4056
|
-
|
|
4517
|
+
/* THE GLYPH, THE TEXT, AND AN ACTION'S COLUMN only where there is one: the
|
|
4518
|
+
third track is implicit, so a callout without an action keeps no gap
|
|
4519
|
+
for it at its end. A grid rather than a row, so a narrow callout can put
|
|
4520
|
+
its action under the text, in the text's own column, whatever the glyph
|
|
4521
|
+
is. */
|
|
4522
|
+
display: grid;
|
|
4523
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
4524
|
+
grid-auto-columns: auto;
|
|
4525
|
+
align-items: start;
|
|
4057
4526
|
gap: var(--spacing-2);
|
|
4058
4527
|
/* The engine's own: a tight strip rather than a padded card. This sits
|
|
4059
4528
|
above a screen or between two sections and takes a line or two of text,
|
|
@@ -4068,17 +4537,29 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4068
4537
|
line-height: var(--font-line-height-normal);
|
|
4069
4538
|
}
|
|
4070
4539
|
|
|
4540
|
+
/*
|
|
4541
|
+
* WITH AN ACTION, ONE LINE OF TEXT CENTRES ON THE BUTTON. The row is the
|
|
4542
|
+
* button's height and the text sat at its top, three pixels above the
|
|
4543
|
+
* button's label. The content is padded by half of what the control is
|
|
4544
|
+
* taller than a line, and the icon moved down with it, so a one-line callout
|
|
4545
|
+
* reads as one line and a longer one keeps its icon on its first line.
|
|
4546
|
+
*/
|
|
4547
|
+
.crewlet-callout:has(> .crewlet-callout__action) {
|
|
4548
|
+
--crewlet-callout-lead: max(0px, calc((var(--size-control-sm) - 1lh) / 2));
|
|
4549
|
+
/* Measured by its own width, so the action can move under the text. */
|
|
4550
|
+
container: crewlet-callout / inline-size;
|
|
4551
|
+
}
|
|
4552
|
+
|
|
4071
4553
|
.crewlet-callout__icon {
|
|
4072
4554
|
display: inline-flex;
|
|
4073
|
-
flex: none;
|
|
4074
4555
|
/* On the first line's optical centre rather than its box top, which a 16px
|
|
4075
4556
|
glyph beside a 13px line sits two pixels above. */
|
|
4076
|
-
margin-top: 2px;
|
|
4557
|
+
margin-top: calc(2px + var(--crewlet-callout-lead, 0px));
|
|
4077
4558
|
}
|
|
4078
4559
|
|
|
4079
4560
|
.crewlet-callout__content {
|
|
4080
4561
|
min-width: 0;
|
|
4081
|
-
|
|
4562
|
+
padding-block: var(--crewlet-callout-lead, 0px);
|
|
4082
4563
|
}
|
|
4083
4564
|
|
|
4084
4565
|
.crewlet-callout__title {
|
|
@@ -4089,10 +4570,31 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4089
4570
|
}
|
|
4090
4571
|
|
|
4091
4572
|
.crewlet-callout__action {
|
|
4092
|
-
|
|
4573
|
+
grid-column: 3;
|
|
4574
|
+
grid-row: 1;
|
|
4093
4575
|
align-self: center;
|
|
4094
4576
|
}
|
|
4095
4577
|
|
|
4578
|
+
/*
|
|
4579
|
+
* A NARROW CALLOUT PUTS ITS ACTION UNDER THE TEXT, at the start of the text's
|
|
4580
|
+
* column, so the sentence keeps the callout's whole measure. Beside it, a
|
|
4581
|
+
* phone's width left the message a column of a word or two a line. The text
|
|
4582
|
+
* no longer centres on a button beside it, so it sits at its own top.
|
|
4583
|
+
*/
|
|
4584
|
+
@container crewlet-callout (width < 28rem) {
|
|
4585
|
+
.crewlet-callout__icon,
|
|
4586
|
+
.crewlet-callout__content {
|
|
4587
|
+
--crewlet-callout-lead: 0px;
|
|
4588
|
+
}
|
|
4589
|
+
|
|
4590
|
+
.crewlet-callout__action {
|
|
4591
|
+
grid-column: 2;
|
|
4592
|
+
grid-row: 2;
|
|
4593
|
+
justify-self: start;
|
|
4594
|
+
align-self: start;
|
|
4595
|
+
}
|
|
4596
|
+
}
|
|
4597
|
+
|
|
4096
4598
|
/*
|
|
4097
4599
|
* Inline code inside a callout takes the callout's ink. A mono chip that kept
|
|
4098
4600
|
* its own neutral ink inside a danger banner read as the one part of the
|
|
@@ -4143,7 +4645,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4143
4645
|
}
|
|
4144
4646
|
|
|
4145
4647
|
|
|
4146
|
-
/* Canvas-
|
|
4648
|
+
/* Canvas-VUG2HLZK.css */
|
|
4147
4649
|
/*
|
|
4148
4650
|
* A bounded viewport (Canvas.tsx). It fills the box it is given and clips; the
|
|
4149
4651
|
* page's own scroller is never involved.
|
|
@@ -4179,6 +4681,19 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4179
4681
|
background-size: var(--spacing-5) var(--spacing-5);
|
|
4180
4682
|
}
|
|
4181
4683
|
|
|
4684
|
+
/*
|
|
4685
|
+
* A GRID ON THE CONTENT'S PLANE (`ground="grid"`): the same dots, but pitched
|
|
4686
|
+
* and placed by the view (`gridOf`), so they pan and zoom with the content.
|
|
4687
|
+
* The dots themselves stay one screen pixel, as a design tool's do.
|
|
4688
|
+
*/
|
|
4689
|
+
.crewlet-canvas[data-ground='grid'] {
|
|
4690
|
+
background-image: radial-gradient(var(--color-border-strong) 1px, transparent 1.2px);
|
|
4691
|
+
background-size:
|
|
4692
|
+
calc(var(--spacing-5) * var(--crewlet-canvas-grid-scale, 1))
|
|
4693
|
+
calc(var(--spacing-5) * var(--crewlet-canvas-grid-scale, 1));
|
|
4694
|
+
background-position: var(--crewlet-canvas-grid-x, 0) var(--crewlet-canvas-grid-y, 0);
|
|
4695
|
+
}
|
|
4696
|
+
|
|
4182
4697
|
.crewlet-canvas__viewport {
|
|
4183
4698
|
position: absolute;
|
|
4184
4699
|
inset: 0;
|
|
@@ -4385,6 +4900,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4385
4900
|
display: none;
|
|
4386
4901
|
}
|
|
4387
4902
|
|
|
4903
|
+
/*
|
|
4904
|
+
* THE NOTE GROWS AWAY FROM THE CORNER. It comes and goes as the canvas's state
|
|
4905
|
+
* does, and drawn on the corner's side of the zoom bar it would push the bar
|
|
4906
|
+
* out from under a pointer on its way to it; so in a bottom corner it is drawn
|
|
4907
|
+
* above the bar, and the bar never moves.
|
|
4908
|
+
*/
|
|
4909
|
+
.crewlet-canvas__controls:not([data-placement='top-right']) .crewlet-canvas__hint {
|
|
4910
|
+
order: -1;
|
|
4911
|
+
}
|
|
4912
|
+
|
|
4388
4913
|
/*
|
|
4389
4914
|
* THE ZOOM READOUT, between the two steppers. It says where the view stands,
|
|
4390
4915
|
* which two chevrons never do, and it is the way to a number without pressing a
|
|
@@ -4510,7 +5035,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4510
5035
|
}
|
|
4511
5036
|
|
|
4512
5037
|
|
|
4513
|
-
/* CanvasBoard-
|
|
5038
|
+
/* CanvasBoard-5NNSKY6A.css */
|
|
4514
5039
|
/*
|
|
4515
5040
|
* A canvas of artboards and notes (CanvasBoard.tsx). Boards and notes are laid
|
|
4516
5041
|
* out in canvas pixels inside the canvas's world and scale with it; their
|
|
@@ -4518,7 +5043,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4518
5043
|
* writes on the layer, so it stays one size on screen.
|
|
4519
5044
|
*/
|
|
4520
5045
|
|
|
5046
|
+
/*
|
|
5047
|
+
* A SIZE CONTAINER BY ITS WIDTH, so the palette can tell a canvas too narrow
|
|
5048
|
+
* to hold it beside the zoom bar on one line (see below).
|
|
5049
|
+
*/
|
|
4521
5050
|
.crewlet-canvas-board {
|
|
5051
|
+
container: crewlet-canvas-board / inline-size;
|
|
4522
5052
|
height: 100%;
|
|
4523
5053
|
min-height: 0;
|
|
4524
5054
|
}
|
|
@@ -4540,6 +5070,10 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4540
5070
|
|
|
4541
5071
|
/* ---- the tool palette, floating at the foot of the field ----------------- */
|
|
4542
5072
|
|
|
5073
|
+
/*
|
|
5074
|
+
* CENTRED AT THE FOOT, on the zoom bar's line: the two bars are one control
|
|
5075
|
+
* step tall and stand the same inset from the field's edge.
|
|
5076
|
+
*/
|
|
4543
5077
|
.crewlet-canvas-board__tools {
|
|
4544
5078
|
position: absolute;
|
|
4545
5079
|
bottom: var(--spacing-3);
|
|
@@ -4548,6 +5082,20 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4548
5082
|
transform: translateX(-50%);
|
|
4549
5083
|
}
|
|
4550
5084
|
|
|
5085
|
+
/*
|
|
5086
|
+
* A NARROW CANVAS (a phone, a split pane) has no room at its foot for the
|
|
5087
|
+
* palette between the zoom bar and the edge, so the palette moves to the top
|
|
5088
|
+
* left corner, which the zoom bar never takes.
|
|
5089
|
+
*/
|
|
5090
|
+
@container crewlet-canvas-board (width < 36rem) {
|
|
5091
|
+
.crewlet-canvas-board__tools {
|
|
5092
|
+
top: var(--spacing-3);
|
|
5093
|
+
bottom: auto;
|
|
5094
|
+
left: var(--spacing-3);
|
|
5095
|
+
transform: none;
|
|
5096
|
+
}
|
|
5097
|
+
}
|
|
5098
|
+
|
|
4551
5099
|
/* ---- a board ------------------------------------------------------------ */
|
|
4552
5100
|
|
|
4553
5101
|
.crewlet-canvas-board__board {
|
|
@@ -4610,7 +5158,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4610
5158
|
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
4611
5159
|
}
|
|
4612
5160
|
|
|
4613
|
-
/* A board that is not running draws its
|
|
5161
|
+
/* A board that is not running draws its size, and why, at screen size. */
|
|
4614
5162
|
.crewlet-canvas-board__placeholder {
|
|
4615
5163
|
position: absolute;
|
|
4616
5164
|
inset: 0;
|
|
@@ -4624,25 +5172,59 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4624
5172
|
text-align: center;
|
|
4625
5173
|
}
|
|
4626
5174
|
|
|
4627
|
-
/*
|
|
4628
|
-
|
|
5175
|
+
/*
|
|
5176
|
+
* ONE BLOCK, SCALED ONCE: its lines keep their spacing at screen size rather
|
|
5177
|
+
* than each line shrinking back into the space the zoom left it. It is held to
|
|
5178
|
+
* the board's width ON SCREEN (the board's own width times the zoom, less a
|
|
5179
|
+
* margin each side), so a line the component judged to fit never runs past
|
|
5180
|
+
* the board's edges into the boards beside it.
|
|
5181
|
+
*/
|
|
4629
5182
|
.crewlet-canvas-board__placeholder-text {
|
|
4630
5183
|
display: flex;
|
|
4631
5184
|
flex-direction: column;
|
|
4632
5185
|
align-items: center;
|
|
4633
5186
|
gap: var(--spacing-1);
|
|
4634
5187
|
flex: none;
|
|
5188
|
+
box-sizing: border-box;
|
|
5189
|
+
max-width: calc(100% * var(--crewlet-canvas-board-zoom));
|
|
5190
|
+
padding-inline: var(--spacing-2);
|
|
4635
5191
|
transform: scale(var(--crewlet-canvas-board-unzoom));
|
|
4636
5192
|
}
|
|
4637
5193
|
|
|
4638
|
-
.crewlet-canvas-board__placeholder-
|
|
5194
|
+
.crewlet-canvas-board__placeholder-text > * {
|
|
5195
|
+
max-width: 100%;
|
|
5196
|
+
overflow: hidden;
|
|
5197
|
+
text-overflow: ellipsis;
|
|
5198
|
+
white-space: nowrap;
|
|
5199
|
+
}
|
|
5200
|
+
|
|
5201
|
+
.crewlet-canvas-board__placeholder-size {
|
|
4639
5202
|
color: var(--color-text-secondary);
|
|
4640
|
-
font-size: var(--font-size-sm);
|
|
4641
5203
|
font-weight: var(--font-weight-medium);
|
|
5204
|
+
font-variant-numeric: tabular-nums;
|
|
4642
5205
|
}
|
|
4643
5206
|
|
|
4644
5207
|
/* ---- chrome, at screen size --------------------------------------------- */
|
|
4645
5208
|
|
|
5209
|
+
/*
|
|
5210
|
+
* THE CHROME IS DRAWN OVER THE CONTENT, every board's and note's over every
|
|
5211
|
+
* board and note, as a design tool draws its frame names. It is counter-scaled
|
|
5212
|
+
* to one size on screen while the content shrinks with the zoom, so far out a
|
|
5213
|
+
* name reaches over the note or board above it; drawn in document order it
|
|
5214
|
+
* went under a note laid out after its board, and that note took every press
|
|
5215
|
+
* meant for the name and the open control.
|
|
5216
|
+
*/
|
|
5217
|
+
.crewlet-canvas-board__chrome,
|
|
5218
|
+
.crewlet-canvas-board__note-tools,
|
|
5219
|
+
.crewlet-canvas-board__resize {
|
|
5220
|
+
z-index: 1;
|
|
5221
|
+
}
|
|
5222
|
+
|
|
5223
|
+
/*
|
|
5224
|
+
* ONE LINE OF TYPE TALL, whatever sits in it: the open control is centred on
|
|
5225
|
+
* the line and allowed past it, so a row of boards zoomed far out loses only
|
|
5226
|
+
* a title's height to the names above it rather than a button's.
|
|
5227
|
+
*/
|
|
4646
5228
|
.crewlet-canvas-board__chrome {
|
|
4647
5229
|
position: absolute;
|
|
4648
5230
|
bottom: 100%;
|
|
@@ -4652,11 +5234,42 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4652
5234
|
gap: var(--spacing-1);
|
|
4653
5235
|
box-sizing: border-box;
|
|
4654
5236
|
width: calc(100% * var(--crewlet-canvas-board-zoom));
|
|
5237
|
+
height: calc(var(--font-size-xs) * var(--font-line-height-normal) + var(--spacing-1));
|
|
4655
5238
|
padding-bottom: var(--spacing-1);
|
|
4656
5239
|
transform: scale(var(--crewlet-canvas-board-unzoom));
|
|
4657
5240
|
transform-origin: bottom left;
|
|
4658
5241
|
}
|
|
4659
5242
|
|
|
5243
|
+
/* A board drawn too narrow to name goes unnamed (`boardRoom`). */
|
|
5244
|
+
.crewlet-canvas-board__board[data-untitled] > .crewlet-canvas-board__chrome {
|
|
5245
|
+
display: none;
|
|
5246
|
+
}
|
|
5247
|
+
|
|
5248
|
+
.crewlet-canvas-board__open {
|
|
5249
|
+
flex: none;
|
|
5250
|
+
}
|
|
5251
|
+
|
|
5252
|
+
/*
|
|
5253
|
+
* THE OPEN CONTROL IS THE BOARD'S, NOT THE CANVAS'S: where a pointer can
|
|
5254
|
+
* hover, it is drawn on the board under it, the selected board and the
|
|
5255
|
+
* control that has focus, so a canvas at rest shows its names and nothing
|
|
5256
|
+
* else. A touch screen has no hover to find it by, so it is always drawn
|
|
5257
|
+
* there.
|
|
5258
|
+
*/
|
|
5259
|
+
@media (hover: hover) {
|
|
5260
|
+
/*
|
|
5261
|
+
* HIDDEN, IT TAKES NO ROOM: out of the row rather than only transparent, so
|
|
5262
|
+
* a narrow board's name has the whole width to itself at rest instead of
|
|
5263
|
+
* being cut to its first letter beside an empty slot. It still takes focus,
|
|
5264
|
+
* and is put back in the row when it has it.
|
|
5265
|
+
*/
|
|
5266
|
+
.crewlet-canvas-board__board:not(:hover, [data-selected]) .crewlet-canvas-board__open:not(:focus-visible) {
|
|
5267
|
+
position: absolute;
|
|
5268
|
+
opacity: 0;
|
|
5269
|
+
pointer-events: none;
|
|
5270
|
+
}
|
|
5271
|
+
}
|
|
5272
|
+
|
|
4660
5273
|
/* The board's name: small, quiet, and the accent once its board is picked out. */
|
|
4661
5274
|
.crewlet-canvas-board__title {
|
|
4662
5275
|
min-width: 0;
|
|
@@ -4664,6 +5277,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4664
5277
|
color: var(--color-text-tertiary);
|
|
4665
5278
|
font-size: var(--font-size-xs);
|
|
4666
5279
|
font-weight: var(--font-weight-medium);
|
|
5280
|
+
line-height: var(--font-line-height-normal);
|
|
4667
5281
|
text-overflow: ellipsis;
|
|
4668
5282
|
white-space: nowrap;
|
|
4669
5283
|
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
@@ -4679,7 +5293,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4679
5293
|
margin: 0;
|
|
4680
5294
|
padding: var(--spacing-1) var(--spacing-2);
|
|
4681
5295
|
border: 1px solid transparent;
|
|
4682
|
-
border-radius: var(--radius-
|
|
5296
|
+
border-radius: var(--radius-md);
|
|
4683
5297
|
background: transparent;
|
|
4684
5298
|
font: inherit;
|
|
4685
5299
|
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
@@ -4691,6 +5305,21 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4691
5305
|
border-color: var(--color-border-default);
|
|
4692
5306
|
}
|
|
4693
5307
|
|
|
5308
|
+
/*
|
|
5309
|
+
* A NAME THAT IS ALSO A MOVE HANDLE keeps the name's type and its place: the
|
|
5310
|
+
* handle's padding and edge are taken back by a margin the same size, so the
|
|
5311
|
+
* letters stay on the board's left edge and the title's line, and only the
|
|
5312
|
+
* hover's box reaches past them.
|
|
5313
|
+
*/
|
|
5314
|
+
.crewlet-canvas-board__title.crewlet-canvas-board__handle {
|
|
5315
|
+
flex: 0 1 auto;
|
|
5316
|
+
margin-block: calc(-1 * (var(--spacing-1) + 1px));
|
|
5317
|
+
margin-inline-start: calc(-1 * (var(--spacing-2) + 1px));
|
|
5318
|
+
font-size: var(--font-size-xs);
|
|
5319
|
+
font-weight: var(--font-weight-medium);
|
|
5320
|
+
line-height: var(--font-line-height-normal);
|
|
5321
|
+
}
|
|
5322
|
+
|
|
4694
5323
|
/* Both handles draw an edge of their own, so the ring sits over it. */
|
|
4695
5324
|
.crewlet-canvas-board__handle:focus-visible,
|
|
4696
5325
|
.crewlet-canvas-board__resize:focus-visible {
|
|
@@ -4846,6 +5475,23 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4846
5475
|
transform-origin: bottom left;
|
|
4847
5476
|
}
|
|
4848
5477
|
|
|
5478
|
+
/*
|
|
5479
|
+
* A NOTE'S TOOLS ARE THE NOTE'S, as a board's open control is the board's:
|
|
5480
|
+
* where a pointer can hover they are drawn on the note under it, the selected
|
|
5481
|
+
* note and the note holding focus, rather than over every note at once.
|
|
5482
|
+
*/
|
|
5483
|
+
@media (hover: hover) {
|
|
5484
|
+
.crewlet-canvas-board__note-tools {
|
|
5485
|
+
opacity: 0;
|
|
5486
|
+
}
|
|
5487
|
+
|
|
5488
|
+
.crewlet-canvas-board__note:hover .crewlet-canvas-board__note-tools,
|
|
5489
|
+
.crewlet-canvas-board__note[data-selected] .crewlet-canvas-board__note-tools,
|
|
5490
|
+
.crewlet-canvas-board__note:focus-within .crewlet-canvas-board__note-tools {
|
|
5491
|
+
opacity: 1;
|
|
5492
|
+
}
|
|
5493
|
+
}
|
|
5494
|
+
|
|
4849
5495
|
.crewlet-canvas-board__note-move {
|
|
4850
5496
|
width: var(--spacing-6);
|
|
4851
5497
|
height: var(--spacing-6);
|
|
@@ -4893,9 +5539,11 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4893
5539
|
}
|
|
4894
5540
|
|
|
4895
5541
|
|
|
4896
|
-
/* CanvasToolbar-
|
|
5542
|
+
/* CanvasToolbar-EM5EVZED.css */
|
|
4897
5543
|
/*
|
|
4898
|
-
* A canvas's tool palette (CanvasToolbar.tsx): the zoom bar's glass surface
|
|
5544
|
+
* A canvas's tool palette (CanvasToolbar.tsx): the zoom bar's glass surface
|
|
5545
|
+
* and its control step (the small one, which every toolbar and panel control
|
|
5546
|
+
* takes), so the two bars stand the same height on the field's foot,
|
|
4899
5547
|
* with the tool in hand drawn SOLID in the accent rather than the soft tint a
|
|
4900
5548
|
* toggle takes elsewhere, because it is the one fact about the palette a
|
|
4901
5549
|
* reader checks from across the field before every press.
|
|
@@ -4910,7 +5558,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4910
5558
|
backdrop-filter: blur(var(--blur-sm));
|
|
4911
5559
|
border: 1px solid var(--color-border-default);
|
|
4912
5560
|
border-radius: var(--radius-md);
|
|
4913
|
-
box-shadow: var(--shadow-
|
|
5561
|
+
box-shadow: var(--shadow-xs);
|
|
4914
5562
|
}
|
|
4915
5563
|
|
|
4916
5564
|
.crewlet-canvas-toolbar .crewlet-icon-btn {
|
|
@@ -5462,7 +6110,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5462
6110
|
}
|
|
5463
6111
|
|
|
5464
6112
|
|
|
5465
|
-
/* Charts-
|
|
6113
|
+
/* Charts-MBJG72BS.css */
|
|
5466
6114
|
/* The chart kit: a legend, a ranked bar list, a stacked bar, stacked
|
|
5467
6115
|
columns, an activity strip, a time series and the reading layer they share. Hand-drawn rather than a charting library, for one reason that
|
|
5468
6116
|
decides it: every mark here reads tokens, in two themes, at the contrast
|
|
@@ -5504,6 +6152,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5504
6152
|
background: var(--crewlet-legend-swatch-color, var(--color-data-other));
|
|
5505
6153
|
}
|
|
5506
6154
|
|
|
6155
|
+
.crewlet-legend__swatch--line {
|
|
6156
|
+
width: 12px;
|
|
6157
|
+
height: 2px;
|
|
6158
|
+
border-radius: calc(var(--radius-xs) / 4);
|
|
6159
|
+
}
|
|
6160
|
+
|
|
5507
6161
|
.crewlet-legend__label {
|
|
5508
6162
|
overflow: hidden;
|
|
5509
6163
|
text-overflow: ellipsis;
|
|
@@ -5622,7 +6276,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5622
6276
|
*/
|
|
5623
6277
|
.crewlet-bar-list__sub,
|
|
5624
6278
|
.crewlet-bar-list__more,
|
|
5625
|
-
.crewlet-
|
|
6279
|
+
.crewlet-chart-empty {
|
|
5626
6280
|
font-size: var(--font-size-xs);
|
|
5627
6281
|
color: var(--color-text-tertiary);
|
|
5628
6282
|
}
|
|
@@ -5639,9 +6293,22 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5639
6293
|
* A card draws its own content in a body now, so a padding here is the panel's
|
|
5640
6294
|
* inset a second time.
|
|
5641
6295
|
*/
|
|
5642
|
-
.crewlet-
|
|
6296
|
+
.crewlet-chart-empty {
|
|
6297
|
+
box-sizing: border-box;
|
|
6298
|
+
display: flex;
|
|
6299
|
+
align-items: center;
|
|
6300
|
+
justify-content: center;
|
|
6301
|
+
height: 100%;
|
|
5643
6302
|
margin: 0;
|
|
5644
6303
|
padding: 0;
|
|
6304
|
+
line-height: var(--font-line-height-normal);
|
|
6305
|
+
text-align: center;
|
|
6306
|
+
}
|
|
6307
|
+
|
|
6308
|
+
.crewlet-chart-empty--start {
|
|
6309
|
+
display: block;
|
|
6310
|
+
height: auto;
|
|
6311
|
+
text-align: start;
|
|
5645
6312
|
}
|
|
5646
6313
|
|
|
5647
6314
|
.crewlet-bar-list__sub {
|
|
@@ -5868,6 +6535,8 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5868
6535
|
row-gap: var(--spacing-1);
|
|
5869
6536
|
margin: 0;
|
|
5870
6537
|
min-width: 0;
|
|
6538
|
+
/* Measured by its own width, for the dates under the plot. */
|
|
6539
|
+
container: crewlet-stacked-columns / inline-size;
|
|
5871
6540
|
}
|
|
5872
6541
|
|
|
5873
6542
|
/*
|
|
@@ -5892,12 +6561,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5892
6561
|
align-items: flex-end;
|
|
5893
6562
|
}
|
|
5894
6563
|
|
|
6564
|
+
/*
|
|
6565
|
+
* The scale's words are set as the dates under the plot are, the sans at the
|
|
6566
|
+
* caption step with tabular figures, so the two axes of one chart read as one
|
|
6567
|
+
* scale. They were the mono at the step below, beside dates in the sans.
|
|
6568
|
+
*/
|
|
5895
6569
|
.crewlet-stacked-columns__tick {
|
|
5896
6570
|
display: flex;
|
|
5897
6571
|
align-items: center;
|
|
5898
6572
|
height: 0;
|
|
5899
|
-
font-
|
|
5900
|
-
font-size: var(--font-size-2xs);
|
|
6573
|
+
font-size: var(--font-size-xs);
|
|
5901
6574
|
line-height: var(--font-line-height-tight);
|
|
5902
6575
|
color: var(--color-text-tertiary);
|
|
5903
6576
|
font-variant-numeric: tabular-nums;
|
|
@@ -5912,7 +6585,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5912
6585
|
* keeps that half line above the plot itself.
|
|
5913
6586
|
*/
|
|
5914
6587
|
.crewlet-stacked-columns--headless {
|
|
5915
|
-
padding-block-start: calc(var(--font-size-
|
|
6588
|
+
padding-block-start: calc(var(--font-size-xs) * var(--font-line-height-tight) / 2);
|
|
5916
6589
|
}
|
|
5917
6590
|
|
|
5918
6591
|
.crewlet-stacked-columns__plot {
|
|
@@ -5962,14 +6635,23 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5962
6635
|
/*
|
|
5963
6636
|
* THE COLUMN IS ITS TOTAL'S HEIGHT (a style property), and its parts share it
|
|
5964
6637
|
* by value, first series at the baseline. They stand 2px apart for the reason
|
|
5965
|
-
* a stacked bar's do, and the gap comes out of the parts.
|
|
6638
|
+
* a stacked bar's do, and the gap comes out of the parts. It stands on the
|
|
6639
|
+
* zero line (a style property), centred in its slot; the column of a
|
|
6640
|
+
* bucket's negative parts hangs from the same line, first series nearest it.
|
|
5966
6641
|
*/
|
|
5967
6642
|
.crewlet-stacked-columns__column {
|
|
6643
|
+
position: absolute;
|
|
6644
|
+
inset-inline-start: 50%;
|
|
5968
6645
|
display: flex;
|
|
5969
6646
|
flex-direction: column-reverse;
|
|
5970
6647
|
gap: 2px;
|
|
5971
6648
|
width: 63%;
|
|
5972
|
-
max-width: var(--spacing-
|
|
6649
|
+
max-width: var(--spacing-6);
|
|
6650
|
+
transform: translateX(-50%);
|
|
6651
|
+
}
|
|
6652
|
+
|
|
6653
|
+
.crewlet-stacked-columns__column--below {
|
|
6654
|
+
flex-direction: column;
|
|
5973
6655
|
}
|
|
5974
6656
|
|
|
5975
6657
|
.crewlet-stacked-columns__segment {
|
|
@@ -5981,13 +6663,19 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5981
6663
|
background: var(--crewlet-stacked-columns-segment-color, var(--color-data-other));
|
|
5982
6664
|
}
|
|
5983
6665
|
|
|
5984
|
-
/* The VALUE END: the top of the topmost part, rounded at the smallest step
|
|
5985
|
-
|
|
5986
|
-
.
|
|
6666
|
+
/* The VALUE END: the top of the topmost part, rounded at the smallest step
|
|
6667
|
+
(the foot of the lowest one, below zero). The end on the zero line stays
|
|
6668
|
+
square, where every column starts. */
|
|
6669
|
+
.crewlet-stacked-columns__column:not(.crewlet-stacked-columns__column--below) > .crewlet-stacked-columns__segment:last-child {
|
|
5987
6670
|
border-top-left-radius: var(--radius-xs);
|
|
5988
6671
|
border-top-right-radius: var(--radius-xs);
|
|
5989
6672
|
}
|
|
5990
6673
|
|
|
6674
|
+
.crewlet-stacked-columns__column--below > .crewlet-stacked-columns__segment:last-child {
|
|
6675
|
+
border-bottom-left-radius: var(--radius-xs);
|
|
6676
|
+
border-bottom-right-radius: var(--radius-xs);
|
|
6677
|
+
}
|
|
6678
|
+
|
|
5991
6679
|
.crewlet-stacked-columns__scale {
|
|
5992
6680
|
position: relative;
|
|
5993
6681
|
grid-column: 2;
|
|
@@ -6039,7 +6727,9 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6039
6727
|
margin-top: var(--spacing-2);
|
|
6040
6728
|
}
|
|
6041
6729
|
|
|
6042
|
-
/* The middle label stands on the column it names (a style property).
|
|
6730
|
+
/* The middle label stands on the column it names (a style property). On a
|
|
6731
|
+
chart too narrow for three dates it leaves the line to the two ends, which
|
|
6732
|
+
it ran into; the tooltip reads every column's date. */
|
|
6043
6733
|
.crewlet-stacked-columns__middle {
|
|
6044
6734
|
position: absolute;
|
|
6045
6735
|
top: 0;
|
|
@@ -6047,6 +6737,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6047
6737
|
white-space: nowrap;
|
|
6048
6738
|
}
|
|
6049
6739
|
|
|
6740
|
+
.crewlet-stacked-columns__scale > span {
|
|
6741
|
+
white-space: nowrap;
|
|
6742
|
+
}
|
|
6743
|
+
|
|
6744
|
+
@container crewlet-stacked-columns (width < 22rem) {
|
|
6745
|
+
.crewlet-stacked-columns__middle {
|
|
6746
|
+
display: none;
|
|
6747
|
+
}
|
|
6748
|
+
}
|
|
6749
|
+
|
|
6050
6750
|
/* ─── The reading layer: a focusable plot and its tooltip ─────── */
|
|
6051
6751
|
|
|
6052
6752
|
/*
|
|
@@ -6146,13 +6846,18 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6146
6846
|
background: var(--crewlet-chart-tooltip-swatch-color, var(--color-data-other));
|
|
6147
6847
|
}
|
|
6148
6848
|
|
|
6849
|
+
/* A name too long for the box ends in an ellipsis before its value: it ran
|
|
6850
|
+
under the number ("lifec1,397 USD"). The value is never cut. */
|
|
6149
6851
|
.crewlet-chart-tooltip__name {
|
|
6150
6852
|
flex: 1;
|
|
6151
6853
|
min-width: 0;
|
|
6854
|
+
overflow: hidden;
|
|
6855
|
+
text-overflow: ellipsis;
|
|
6152
6856
|
color: var(--color-text-secondary);
|
|
6153
6857
|
}
|
|
6154
6858
|
|
|
6155
6859
|
.crewlet-chart-tooltip__value {
|
|
6860
|
+
flex: none;
|
|
6156
6861
|
color: var(--color-text-primary);
|
|
6157
6862
|
font-variant-numeric: tabular-nums;
|
|
6158
6863
|
}
|
|
@@ -6175,9 +6880,14 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6175
6880
|
width: 100%;
|
|
6176
6881
|
}
|
|
6177
6882
|
|
|
6883
|
+
/*
|
|
6884
|
+
* A cell shares the strip's width with the others, up to a column's width,
|
|
6885
|
+
* so a strip of one day is one mark rather than a slab across the figure.
|
|
6886
|
+
*/
|
|
6178
6887
|
.crewlet-activity-strip__cell {
|
|
6179
6888
|
flex: 1;
|
|
6180
6889
|
min-width: var(--crewlet-activity-strip-cell-min-width, 2px);
|
|
6890
|
+
max-width: var(--crewlet-activity-strip-cell-max-width, var(--spacing-6));
|
|
6181
6891
|
height: var(--crewlet-activity-strip-fill, 10%);
|
|
6182
6892
|
/*
|
|
6183
6893
|
* A quarter of the smallest step. A cell is two pixels wide, so at the step
|
|
@@ -6195,6 +6905,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6195
6905
|
background: var(--color-data-1);
|
|
6196
6906
|
}
|
|
6197
6907
|
|
|
6908
|
+
/* The cell being read lifts, as a column being read does, by the hover step
|
|
6909
|
+
behind it rather than by a second colour. */
|
|
6910
|
+
.crewlet-activity-strip__cell.is-read {
|
|
6911
|
+
box-shadow: 0 0 0 2px var(--color-surface-hover);
|
|
6912
|
+
}
|
|
6913
|
+
|
|
6198
6914
|
/* ─── Time series, and the sparkline beside a number ──────────── */
|
|
6199
6915
|
|
|
6200
6916
|
/*
|
|
@@ -6221,14 +6937,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6221
6937
|
}
|
|
6222
6938
|
|
|
6223
6939
|
/*
|
|
6224
|
-
* The grid is
|
|
6225
|
-
*
|
|
6226
|
-
*
|
|
6940
|
+
* The grid is a SOLID HAIRLINE in the default border, the ink the column
|
|
6941
|
+
* chart's grid is drawn in. It was dashed, so that three lines would
|
|
6942
|
+
* not read as three series, but a one pixel rule in a border ink beside a two
|
|
6943
|
+
* pixel line in a data hue reads as neither, and a dash is how a chart says
|
|
6944
|
+
* "projection" or "threshold". The lines carry no values of their own: the
|
|
6945
|
+
* peak under the plot is the scale.
|
|
6227
6946
|
*/
|
|
6228
6947
|
.crewlet-chart__grid-line {
|
|
6229
6948
|
stroke: var(--color-border-default);
|
|
6230
6949
|
stroke-width: 1;
|
|
6231
|
-
stroke-dasharray: 2 4;
|
|
6232
6950
|
}
|
|
6233
6951
|
|
|
6234
6952
|
/*
|
|
@@ -6253,7 +6971,34 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6253
6971
|
pointer-events: none;
|
|
6254
6972
|
}
|
|
6255
6973
|
|
|
6256
|
-
/*
|
|
6974
|
+
/*
|
|
6975
|
+
* A POINT: a disc 8px across in its series' hue, cut out of the ground by a
|
|
6976
|
+
* 2px ring of the card (`--crewlet-spark-ground`, as a sparkline's point is),
|
|
6977
|
+
* centred on its value. It stands over the plot rather than in it, so it stays
|
|
6978
|
+
* round at every width, and is drawn for a series of one point and for every
|
|
6979
|
+
* series at the instant being read.
|
|
6980
|
+
*/
|
|
6981
|
+
.crewlet-time-series__dot {
|
|
6982
|
+
position: absolute;
|
|
6983
|
+
width: 8px;
|
|
6984
|
+
height: 8px;
|
|
6985
|
+
border-radius: 50%;
|
|
6986
|
+
background: var(--crewlet-time-series-dot-color, var(--color-data-other));
|
|
6987
|
+
box-shadow: 0 0 0 2px var(--crewlet-spark-ground, var(--color-surface-subtle));
|
|
6988
|
+
transform: translate(-50%, -50%);
|
|
6989
|
+
pointer-events: none;
|
|
6990
|
+
}
|
|
6991
|
+
|
|
6992
|
+
/*
|
|
6993
|
+
* The window's two ends and its peak, under the plot: the scale, as words.
|
|
6994
|
+
* The ends hold their words whole and the range between them gives way, so a
|
|
6995
|
+
* narrow chart never runs one into another; under 18rem the range leaves the
|
|
6996
|
+
* line to the tooltip and the summary, which carry it too.
|
|
6997
|
+
*/
|
|
6998
|
+
.crewlet-time-series {
|
|
6999
|
+
container: crewlet-time-series / inline-size;
|
|
7000
|
+
}
|
|
7001
|
+
|
|
6257
7002
|
.crewlet-time-series__scale {
|
|
6258
7003
|
display: flex;
|
|
6259
7004
|
justify-content: space-between;
|
|
@@ -6264,6 +7009,33 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6264
7009
|
font-variant-numeric: tabular-nums;
|
|
6265
7010
|
}
|
|
6266
7011
|
|
|
7012
|
+
.crewlet-time-series__scale > span {
|
|
7013
|
+
flex: none;
|
|
7014
|
+
white-space: nowrap;
|
|
7015
|
+
}
|
|
7016
|
+
|
|
7017
|
+
/* A window of one instant is drawn at the plot's middle, and so is its date. */
|
|
7018
|
+
.crewlet-time-series__scale--instant {
|
|
7019
|
+
justify-content: center;
|
|
7020
|
+
}
|
|
7021
|
+
|
|
7022
|
+
.crewlet-time-series__scale > .crewlet-time-series__range {
|
|
7023
|
+
flex: 0 1 auto;
|
|
7024
|
+
min-width: 0;
|
|
7025
|
+
overflow: hidden;
|
|
7026
|
+
text-overflow: ellipsis;
|
|
7027
|
+
}
|
|
7028
|
+
|
|
7029
|
+
@container crewlet-time-series (width < 18rem) {
|
|
7030
|
+
.crewlet-time-series__range {
|
|
7031
|
+
display: none;
|
|
7032
|
+
}
|
|
7033
|
+
}
|
|
7034
|
+
|
|
7035
|
+
.crewlet-time-series__legend {
|
|
7036
|
+
margin-top: var(--spacing-2);
|
|
7037
|
+
}
|
|
7038
|
+
|
|
6267
7039
|
/*
|
|
6268
7040
|
* THE SPARKLINE: the plot stretched to the box, and, with `current`, one
|
|
6269
7041
|
* accent point on the last value.
|
|
@@ -6321,7 +7093,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6321
7093
|
}
|
|
6322
7094
|
|
|
6323
7095
|
|
|
6324
|
-
/* Checkbox-
|
|
7096
|
+
/* Checkbox-ALWG3WV2.css */
|
|
6325
7097
|
/*
|
|
6326
7098
|
* Checkbox: a box, its label and its consequence as one target.
|
|
6327
7099
|
*
|
|
@@ -6432,6 +7204,17 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6432
7204
|
.crewlet-checkbox--sm {
|
|
6433
7205
|
--crewlet-checkbox-size: 14px;
|
|
6434
7206
|
|
|
7207
|
+
/*
|
|
7208
|
+
* ITS LINE IS CENTRED IN THE ROW. The row's floor was a minimum height with
|
|
7209
|
+
* the label at its top, so in a form row of small inputs (whose text sits
|
|
7210
|
+
* on their middle) the box and its label stood 5px above the line every
|
|
7211
|
+
* other control's text was on. The floor is made of equal padding round
|
|
7212
|
+
* the first line instead: one line comes out exactly the row's height with
|
|
7213
|
+
* the text on its middle, and a longer label grows the row downwards with
|
|
7214
|
+
* the box still on its first line.
|
|
7215
|
+
*/
|
|
7216
|
+
min-height: 0;
|
|
7217
|
+
padding-block: calc((var(--size-row-sm) - var(--font-line-height-snug) * 1em) / 2);
|
|
6435
7218
|
font-size: var(--font-size-compact);
|
|
6436
7219
|
}
|
|
6437
7220
|
|
|
@@ -6991,7 +7774,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6991
7774
|
}
|
|
6992
7775
|
|
|
6993
7776
|
|
|
6994
|
-
/* CommandPalette-
|
|
7777
|
+
/* CommandPalette-7CFGVBND.css */
|
|
6995
7778
|
/*
|
|
6996
7779
|
* The command palette: a field, an optional row of scopes, one scroller
|
|
6997
7780
|
* holding the lead and the list, and a key legend.
|
|
@@ -7141,7 +7924,11 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7141
7924
|
background: var(--color-surface-background);
|
|
7142
7925
|
}
|
|
7143
7926
|
|
|
7927
|
+
/* THE LEGEND SPANS THE BAND: a palette's foot has no actions, so its start
|
|
7928
|
+
slot takes the whole width, and a consumer that ends the legend with what
|
|
7929
|
+
the search is doing can push that to the band's end. */
|
|
7144
7930
|
.crewlet-palette .crewlet-modal__footer-start {
|
|
7931
|
+
flex: 1 1 auto;
|
|
7145
7932
|
gap: var(--spacing-4);
|
|
7146
7933
|
font-size: var(--font-size-xs);
|
|
7147
7934
|
}
|
|
@@ -7520,7 +8307,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7520
8307
|
}
|
|
7521
8308
|
|
|
7522
8309
|
|
|
7523
|
-
/* Container-
|
|
8310
|
+
/* Container-34BAKG7B.css */
|
|
7524
8311
|
/*
|
|
7525
8312
|
* Container, the centred content measure. One max-width scale shared by every
|
|
7526
8313
|
* surface, so pages line up regardless of who composed them.
|
|
@@ -7568,9 +8355,11 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7568
8355
|
max-width: none;
|
|
7569
8356
|
}
|
|
7570
8357
|
|
|
8358
|
+
/* A PHONE'S GUTTER IS THE SHELL'S, 16px, the top bar's own inset: a narrower
|
|
8359
|
+
one stood a page's content left of the title over it. */
|
|
7571
8360
|
@media (max-width: 480px) {
|
|
7572
8361
|
.crewlet-container {
|
|
7573
|
-
padding-inline: var(--spacing-
|
|
8362
|
+
padding-inline: var(--spacing-4);
|
|
7574
8363
|
}
|
|
7575
8364
|
}
|
|
7576
8365
|
|
|
@@ -7790,7 +8579,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7790
8579
|
}
|
|
7791
8580
|
|
|
7792
8581
|
|
|
7793
|
-
/* DashboardCover-
|
|
8582
|
+
/* DashboardCover-KYGYMRKW.css */
|
|
7794
8583
|
/*
|
|
7795
8584
|
* DashboardCover: a dashboard's cover at a gallery card's preview size (16:9,
|
|
7796
8585
|
* about 280 by 158 pixels at its smallest). Up to three headline figures, or a
|
|
@@ -7804,23 +8593,27 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7804
8593
|
color: var(--color-text-tertiary);
|
|
7805
8594
|
}
|
|
7806
8595
|
|
|
8596
|
+
/*
|
|
8597
|
+
* THE FIGURES ARE ROWS, the label at the start and the figure (or the dataset
|
|
8598
|
+
* it cites) at the end. Three tiles side by side gave each label a third of a
|
|
8599
|
+
* card's width, so every one was cut to its first word ("Open w…" over "Open
|
|
8600
|
+
* w…"); a row gives the label the card's width, which is what says what the
|
|
8601
|
+
* board measures.
|
|
8602
|
+
*/
|
|
7807
8603
|
.crewlet-dashboard-cover--stats {
|
|
7808
8604
|
display: grid;
|
|
7809
|
-
grid-auto-
|
|
7810
|
-
grid-auto-flow: column;
|
|
7811
|
-
align-items: center;
|
|
8605
|
+
grid-auto-rows: minmax(0, 1fr);
|
|
7812
8606
|
gap: var(--spacing-2);
|
|
7813
8607
|
}
|
|
7814
8608
|
|
|
7815
8609
|
.crewlet-dashboard-cover__stat {
|
|
7816
8610
|
display: flex;
|
|
7817
|
-
|
|
7818
|
-
justify-content:
|
|
7819
|
-
gap: var(--spacing-
|
|
8611
|
+
align-items: center;
|
|
8612
|
+
justify-content: space-between;
|
|
8613
|
+
gap: var(--spacing-3);
|
|
7820
8614
|
min-width: 0;
|
|
7821
|
-
height:
|
|
7822
|
-
|
|
7823
|
-
padding: var(--spacing-2) var(--spacing-3);
|
|
8615
|
+
min-height: 0;
|
|
8616
|
+
padding: 0 var(--spacing-3);
|
|
7824
8617
|
border: 1px solid var(--color-border-default);
|
|
7825
8618
|
border-radius: var(--radius-md);
|
|
7826
8619
|
background: var(--color-surface-elevated);
|
|
@@ -7835,6 +8628,33 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7835
8628
|
white-space: nowrap;
|
|
7836
8629
|
}
|
|
7837
8630
|
|
|
8631
|
+
.crewlet-dashboard-cover__label {
|
|
8632
|
+
flex: 1 1 auto;
|
|
8633
|
+
min-width: 0;
|
|
8634
|
+
color: var(--color-text-secondary);
|
|
8635
|
+
}
|
|
8636
|
+
|
|
8637
|
+
.crewlet-dashboard-cover__value {
|
|
8638
|
+
flex: none;
|
|
8639
|
+
max-width: 50%;
|
|
8640
|
+
overflow: hidden;
|
|
8641
|
+
color: var(--color-text-primary);
|
|
8642
|
+
font-size: var(--font-size-lg);
|
|
8643
|
+
font-variant-numeric: tabular-nums;
|
|
8644
|
+
font-weight: var(--font-weight-semibold);
|
|
8645
|
+
line-height: var(--font-line-height-tight);
|
|
8646
|
+
text-overflow: ellipsis;
|
|
8647
|
+
white-space: nowrap;
|
|
8648
|
+
}
|
|
8649
|
+
|
|
8650
|
+
.crewlet-dashboard-cover__source {
|
|
8651
|
+
overflow: hidden;
|
|
8652
|
+
font-size: var(--font-size-xs);
|
|
8653
|
+
line-height: var(--font-line-height-snug);
|
|
8654
|
+
text-overflow: ellipsis;
|
|
8655
|
+
white-space: nowrap;
|
|
8656
|
+
}
|
|
8657
|
+
|
|
7838
8658
|
.crewlet-dashboard-cover__label {
|
|
7839
8659
|
color: var(--color-text-secondary);
|
|
7840
8660
|
}
|
|
@@ -7851,6 +8671,8 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7851
8671
|
}
|
|
7852
8672
|
|
|
7853
8673
|
.crewlet-dashboard-cover__source {
|
|
8674
|
+
flex: 0 1 auto;
|
|
8675
|
+
max-width: 50%;
|
|
7854
8676
|
color: var(--color-text-tertiary);
|
|
7855
8677
|
}
|
|
7856
8678
|
|
|
@@ -7936,7 +8758,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7936
8758
|
}
|
|
7937
8759
|
|
|
7938
8760
|
|
|
7939
|
-
/* DataTable-
|
|
8761
|
+
/* DataTable-NL2YWAIA.css */
|
|
7940
8762
|
/* ─────────────────────────────────────────────────────────────────
|
|
7941
8763
|
* Default variant.
|
|
7942
8764
|
*
|
|
@@ -8486,6 +9308,9 @@ body.crewlet-data-table-resizing {
|
|
|
8486
9308
|
*/
|
|
8487
9309
|
--crewlet-data-table-cell-pad-y: calc((var(--spacing-2) + var(--spacing-3)) / 2);
|
|
8488
9310
|
--crewlet-data-table-cell-pad-x: var(--spacing-3);
|
|
9311
|
+
/* The row's height, the list row token unless a host's list keeps another
|
|
9312
|
+
rhythm (and rebinds the cell's vertical inset to fit inside it). */
|
|
9313
|
+
--crewlet-data-table-row-height: var(--size-row-md);
|
|
8489
9314
|
/* The header's own vertical inset. It equals the cell's at this density and
|
|
8490
9315
|
parts from it at comfortable, which is where 0.2.0 drew the two apart. */
|
|
8491
9316
|
--crewlet-data-table-head-pad-y: var(--crewlet-data-table-cell-pad-y);
|
|
@@ -8903,7 +9728,7 @@ body.crewlet-data-table-resizing {
|
|
|
8903
9728
|
.crewlet-data-table--compact .crewlet-data-table__table td {
|
|
8904
9729
|
/* The row token, so a compact table lines up with every other list in a
|
|
8905
9730
|
product and a cell holding one word is as tall as a cell holding a chip. */
|
|
8906
|
-
height: var(--
|
|
9731
|
+
height: var(--crewlet-data-table-row-height);
|
|
8907
9732
|
}
|
|
8908
9733
|
|
|
8909
9734
|
/*
|
|
@@ -11260,88 +12085,199 @@ svg.crewlet-datetime__chevron {
|
|
|
11260
12085
|
}
|
|
11261
12086
|
|
|
11262
12087
|
|
|
11263
|
-
/* DocTabsEditor-
|
|
12088
|
+
/* DocTabsEditor-4M452LNS.css */
|
|
11264
12089
|
/*
|
|
11265
|
-
* DocTabsEditor: a document's tabs as rows
|
|
11266
|
-
*
|
|
11267
|
-
*
|
|
12090
|
+
* DocTabsEditor: a document's tabs as the rows of a list, set in the register
|
|
12091
|
+
* of the outline a reader sees in the same column. A row is its title, the
|
|
12092
|
+
* open one filled as an inbox's open row is; its handle and its menu wait at
|
|
12093
|
+
* its edges and show under the pointer or the keyboard, so six tabs read as
|
|
12094
|
+
* six titles.
|
|
11268
12095
|
*/
|
|
11269
12096
|
|
|
11270
12097
|
.crewlet-doc-tabs-editor {
|
|
11271
12098
|
display: flex;
|
|
11272
12099
|
flex-direction: column;
|
|
11273
|
-
gap: var(--spacing-
|
|
12100
|
+
gap: var(--spacing-1);
|
|
11274
12101
|
min-width: 0;
|
|
11275
12102
|
}
|
|
11276
12103
|
|
|
12104
|
+
/* The list's name in the outline's register, with Add at its end. */
|
|
12105
|
+
.crewlet-doc-tabs-editor__head {
|
|
12106
|
+
display: flex;
|
|
12107
|
+
align-items: center;
|
|
12108
|
+
justify-content: space-between;
|
|
12109
|
+
gap: var(--spacing-2);
|
|
12110
|
+
min-height: var(--size-control-sm);
|
|
12111
|
+
}
|
|
12112
|
+
|
|
12113
|
+
.crewlet-doc-tabs-editor__heading {
|
|
12114
|
+
margin: 0;
|
|
12115
|
+
font-family: var(--font-family-sans);
|
|
12116
|
+
font-size: var(--font-size-xs);
|
|
12117
|
+
font-weight: var(--font-weight-medium);
|
|
12118
|
+
line-height: var(--font-line-height-tight);
|
|
12119
|
+
color: var(--color-text-tertiary);
|
|
12120
|
+
}
|
|
12121
|
+
|
|
11277
12122
|
.crewlet-doc-tabs-editor__list {
|
|
11278
12123
|
display: flex;
|
|
11279
12124
|
flex-direction: column;
|
|
11280
|
-
gap: var(--spacing-1);
|
|
12125
|
+
gap: calc(var(--spacing-1) / 2);
|
|
11281
12126
|
margin: 0;
|
|
11282
12127
|
padding: 0;
|
|
11283
12128
|
list-style: none;
|
|
11284
12129
|
}
|
|
11285
12130
|
|
|
12131
|
+
/*
|
|
12132
|
+
* A ROW IS THREE TRACKS that every row shares: the handle, the title and the
|
|
12133
|
+
* menu. The title's column starts at one edge all the way down, and a title
|
|
12134
|
+
* wraps rather than being cut, since a tab cut to fit is one an editor
|
|
12135
|
+
* cannot tell from its neighbour.
|
|
12136
|
+
*/
|
|
11286
12137
|
.crewlet-doc-tabs-editor__item {
|
|
11287
|
-
display:
|
|
11288
|
-
|
|
11289
|
-
|
|
11290
|
-
|
|
11291
|
-
|
|
12138
|
+
display: grid;
|
|
12139
|
+
grid-template-columns: var(--size-control-sm) minmax(0, 1fr) var(--size-control-sm);
|
|
12140
|
+
align-items: start;
|
|
12141
|
+
gap: calc(var(--spacing-1) / 2);
|
|
12142
|
+
padding: calc(var(--spacing-1) / 2);
|
|
11292
12143
|
border-radius: var(--radius-md);
|
|
11293
|
-
|
|
12144
|
+
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
11294
12145
|
}
|
|
11295
12146
|
|
|
11296
|
-
.crewlet-doc-tabs-editor__item
|
|
11297
|
-
|
|
12147
|
+
.crewlet-doc-tabs-editor__item:hover {
|
|
12148
|
+
background: var(--color-surface-hover);
|
|
12149
|
+
}
|
|
12150
|
+
|
|
12151
|
+
.crewlet-doc-tabs-editor__item.is-open,
|
|
12152
|
+
.crewlet-doc-tabs-editor__item.is-open:hover {
|
|
12153
|
+
background: var(--color-surface-pressed);
|
|
12154
|
+
}
|
|
12155
|
+
|
|
12156
|
+
/* A row being renamed is its field: the fill would sit around a second box. */
|
|
12157
|
+
.crewlet-doc-tabs-editor__item.is-renaming,
|
|
12158
|
+
.crewlet-doc-tabs-editor__item.is-renaming:hover {
|
|
12159
|
+
background: none;
|
|
12160
|
+
}
|
|
12161
|
+
|
|
12162
|
+
/* The new tab's field stands where its title will, in the title's track. */
|
|
12163
|
+
.crewlet-doc-tabs-editor__item--new > .crewlet-doc-tabs-editor__field {
|
|
12164
|
+
grid-column: 2;
|
|
11298
12165
|
}
|
|
11299
12166
|
|
|
11300
12167
|
.crewlet-doc-tabs-editor__item[data-reorder='dragging'] {
|
|
11301
|
-
|
|
11302
|
-
|
|
12168
|
+
outline: 1px dashed var(--color-border-strong);
|
|
12169
|
+
outline-offset: -1px;
|
|
11303
12170
|
background: transparent;
|
|
11304
12171
|
}
|
|
12172
|
+
|
|
11305
12173
|
.crewlet-doc-tabs-editor__item[data-reorder='dragging'] > * {
|
|
11306
12174
|
opacity: 0.4;
|
|
11307
12175
|
}
|
|
11308
12176
|
|
|
11309
12177
|
.crewlet-doc-tabs-editor__handle {
|
|
11310
|
-
flex-shrink: 0;
|
|
11311
12178
|
cursor: grab;
|
|
11312
12179
|
color: var(--color-text-tertiary);
|
|
11313
12180
|
}
|
|
12181
|
+
|
|
11314
12182
|
.crewlet-doc-tabs-editor__handle:active {
|
|
11315
12183
|
cursor: grabbing;
|
|
11316
12184
|
}
|
|
11317
12185
|
|
|
11318
12186
|
.crewlet-doc-tabs-editor__field {
|
|
11319
12187
|
display: flex;
|
|
11320
|
-
flex: 1 1 12rem;
|
|
11321
12188
|
flex-direction: column;
|
|
11322
|
-
gap: var(--spacing-1);
|
|
12189
|
+
gap: calc(var(--spacing-1) / 2);
|
|
11323
12190
|
min-width: 0;
|
|
11324
12191
|
}
|
|
11325
12192
|
|
|
12193
|
+
/*
|
|
12194
|
+
* The title, which opens the tab: the row's own words, never a second box.
|
|
12195
|
+
* Its words start where the small field's do (its side padding and its 1px
|
|
12196
|
+
* border), so a title does not jump sideways when Rename turns it into one.
|
|
12197
|
+
*/
|
|
12198
|
+
.crewlet-doc-tabs-editor__open {
|
|
12199
|
+
display: block;
|
|
12200
|
+
width: 100%;
|
|
12201
|
+
min-height: var(--size-control-sm);
|
|
12202
|
+
margin: 0;
|
|
12203
|
+
padding: calc((var(--size-control-sm) - var(--font-size-compact) * var(--font-line-height-snug)) / 2)
|
|
12204
|
+
calc(var(--spacing-2) + 1px);
|
|
12205
|
+
border: 0;
|
|
12206
|
+
border-radius: var(--radius-sm);
|
|
12207
|
+
background: none;
|
|
12208
|
+
font-family: var(--font-family-sans);
|
|
12209
|
+
font-size: var(--font-size-compact);
|
|
12210
|
+
font-weight: var(--font-weight-regular);
|
|
12211
|
+
line-height: var(--font-line-height-snug);
|
|
12212
|
+
text-align: start;
|
|
12213
|
+
color: var(--color-text-secondary);
|
|
12214
|
+
overflow-wrap: anywhere;
|
|
12215
|
+
cursor: pointer;
|
|
12216
|
+
}
|
|
12217
|
+
|
|
12218
|
+
.crewlet-doc-tabs-editor__item:hover .crewlet-doc-tabs-editor__open,
|
|
12219
|
+
.crewlet-doc-tabs-editor__open[aria-current='true'] {
|
|
12220
|
+
color: var(--color-text-primary);
|
|
12221
|
+
}
|
|
12222
|
+
|
|
12223
|
+
.crewlet-doc-tabs-editor__open:focus-visible {
|
|
12224
|
+
outline: 2px solid var(--color-focus);
|
|
12225
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
12226
|
+
}
|
|
12227
|
+
|
|
12228
|
+
.crewlet-doc-tabs-editor__open:disabled {
|
|
12229
|
+
cursor: not-allowed;
|
|
12230
|
+
}
|
|
12231
|
+
|
|
11326
12232
|
.crewlet-doc-tabs-editor__problem {
|
|
12233
|
+
padding-inline: calc(var(--spacing-2) + 1px);
|
|
11327
12234
|
color: var(--color-feedback-danger-ink);
|
|
11328
12235
|
font-size: var(--font-size-xs);
|
|
12236
|
+
line-height: var(--font-line-height-snug);
|
|
12237
|
+
}
|
|
12238
|
+
|
|
12239
|
+
/*
|
|
12240
|
+
* THE EDGES WAIT FOR THE POINTER. The handle and the menu are drawn on the
|
|
12241
|
+
* row under the pointer, on the open row, on a row the keyboard is inside and
|
|
12242
|
+
* on a row whose menu is open; elsewhere they keep their place unseen, so
|
|
12243
|
+
* nothing moves when they appear. A device with no hover shows them always,
|
|
12244
|
+
* since there is no pointer to wait for.
|
|
12245
|
+
*/
|
|
12246
|
+
@media (hover: hover) {
|
|
12247
|
+
.crewlet-doc-tabs-editor__handle,
|
|
12248
|
+
.crewlet-doc-tabs-editor__actions {
|
|
12249
|
+
opacity: 0;
|
|
12250
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
12251
|
+
}
|
|
12252
|
+
|
|
12253
|
+
.crewlet-doc-tabs-editor__item:is(:hover, :focus-within, .is-open, :has([aria-expanded='true']))
|
|
12254
|
+
:is(.crewlet-doc-tabs-editor__handle, .crewlet-doc-tabs-editor__actions) {
|
|
12255
|
+
opacity: 1;
|
|
12256
|
+
}
|
|
11329
12257
|
}
|
|
11330
12258
|
|
|
11331
|
-
.crewlet-doc-tabs-
|
|
12259
|
+
.crewlet-doc-tabs-editor__actions {
|
|
11332
12260
|
display: inline-flex;
|
|
11333
|
-
flex-shrink: 0;
|
|
11334
12261
|
}
|
|
11335
12262
|
|
|
11336
|
-
|
|
11337
|
-
|
|
11338
|
-
|
|
11339
|
-
|
|
11340
|
-
|
|
12263
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12264
|
+
.crewlet-doc-tabs-editor__item,
|
|
12265
|
+
.crewlet-doc-tabs-editor__handle,
|
|
12266
|
+
.crewlet-doc-tabs-editor__actions {
|
|
12267
|
+
transition: none;
|
|
12268
|
+
}
|
|
12269
|
+
}
|
|
12270
|
+
|
|
12271
|
+
/* FORCED COLORS drop the open row's fill, so it is outlined instead. */
|
|
12272
|
+
@media (forced-colors: active) {
|
|
12273
|
+
.crewlet-doc-tabs-editor__item.is-open {
|
|
12274
|
+
outline: 1px solid Highlight;
|
|
12275
|
+
outline-offset: -1px;
|
|
12276
|
+
}
|
|
11341
12277
|
}
|
|
11342
12278
|
|
|
11343
12279
|
|
|
11344
|
-
/* Document-
|
|
12280
|
+
/* Document-JUGCSQ4L.css */
|
|
11345
12281
|
/*
|
|
11346
12282
|
* Rendered markdown, set as a document (Document.tsx).
|
|
11347
12283
|
*
|
|
@@ -11416,10 +12352,25 @@ svg.crewlet-datetime__chevron {
|
|
|
11416
12352
|
font-size: var(--font-size-lg);
|
|
11417
12353
|
}
|
|
11418
12354
|
|
|
11419
|
-
|
|
12355
|
+
/*
|
|
12356
|
+
* EVERY LEVEL A STEP OF ITS OWN. A renderer draws a body from `h2` down, so a
|
|
12357
|
+
* page's fourth and fifth levels land on `h5` and `h6`; set at one size with
|
|
12358
|
+
* `h4`, three levels of a document read as one. The two deepest take the
|
|
12359
|
+
* body's own step, and the last is told apart by its ink, as a run-in
|
|
12360
|
+
* heading is in print.
|
|
12361
|
+
*/
|
|
12362
|
+
.crewlet-document h4 {
|
|
11420
12363
|
font-size: var(--font-size-md);
|
|
11421
12364
|
}
|
|
11422
12365
|
|
|
12366
|
+
.crewlet-document :where(h5, h6) {
|
|
12367
|
+
font-size: var(--font-size-sm);
|
|
12368
|
+
}
|
|
12369
|
+
|
|
12370
|
+
.crewlet-document h6 {
|
|
12371
|
+
color: var(--color-text-secondary);
|
|
12372
|
+
}
|
|
12373
|
+
|
|
11423
12374
|
.crewlet-document--sm h1 {
|
|
11424
12375
|
font-size: var(--font-size-lg);
|
|
11425
12376
|
}
|
|
@@ -11453,12 +12404,32 @@ svg.crewlet-datetime__chevron {
|
|
|
11453
12404
|
color: var(--color-text-primary);
|
|
11454
12405
|
}
|
|
11455
12406
|
|
|
11456
|
-
.crewlet-document :where(ul, ol) {
|
|
11457
|
-
padding-inline-start: var(--spacing-5);
|
|
12407
|
+
.crewlet-document :where(ul, ol) {
|
|
12408
|
+
padding-inline-start: var(--spacing-5);
|
|
12409
|
+
}
|
|
12410
|
+
|
|
12411
|
+
.crewlet-document li + li,
|
|
12412
|
+
.crewlet-document li > :where(ul, ol) {
|
|
12413
|
+
margin-block-start: var(--spacing-1);
|
|
12414
|
+
}
|
|
12415
|
+
|
|
12416
|
+
/*
|
|
12417
|
+
* THE RHYTHM HOLDS INSIDE A BLOCK THAT HOLDS BLOCKS. The sibling rule above
|
|
12418
|
+
* reaches only the body's own children, so a quote's second paragraph and a
|
|
12419
|
+
* list item's second paragraph ran into the first with no gap at all. A quote
|
|
12420
|
+
* is prose and takes the body's gap; a list item is one point and takes the
|
|
12421
|
+
* smaller step, so its paragraphs still read as one item. A task item's
|
|
12422
|
+
* blocks sit in the column beside its box, which is the same item.
|
|
12423
|
+
*/
|
|
12424
|
+
.crewlet-document :where(blockquote, [data-callout-body]) > * + * {
|
|
12425
|
+
margin-block-start: var(--crewlet-document-gap);
|
|
12426
|
+
}
|
|
12427
|
+
|
|
12428
|
+
.crewlet-document :where(li, li > input[type='checkbox'] + *) > :not(input, ul, ol) + :not(ul, ol) {
|
|
12429
|
+
margin-block-start: var(--spacing-2);
|
|
11458
12430
|
}
|
|
11459
12431
|
|
|
11460
|
-
.crewlet-document li +
|
|
11461
|
-
.crewlet-document li > :where(ul, ol) {
|
|
12432
|
+
.crewlet-document li > input[type='checkbox'] + * > :where(ul, ol) {
|
|
11462
12433
|
margin-block-start: var(--spacing-1);
|
|
11463
12434
|
}
|
|
11464
12435
|
|
|
@@ -11631,6 +12602,48 @@ svg.crewlet-datetime__chevron {
|
|
|
11631
12602
|
overflow-wrap: anywhere;
|
|
11632
12603
|
}
|
|
11633
12604
|
|
|
12605
|
+
/*
|
|
12606
|
+
* The title while it is written (`DocumentTitleField`): the title's own type
|
|
12607
|
+
* on no surface of its own, with a line along its foot that answers the
|
|
12608
|
+
* pointer, the focus and a refusal. The line is a border rather than a
|
|
12609
|
+
* shadow, because forced colours keep a border and drop a shadow.
|
|
12610
|
+
*/
|
|
12611
|
+
.crewlet-document-title-field {
|
|
12612
|
+
display: block;
|
|
12613
|
+
width: 100%;
|
|
12614
|
+
min-width: 0;
|
|
12615
|
+
padding: 0 0 var(--spacing-1);
|
|
12616
|
+
border: 0;
|
|
12617
|
+
border-block-end: 2px solid transparent;
|
|
12618
|
+
border-radius: 0;
|
|
12619
|
+
background: none;
|
|
12620
|
+
outline: none;
|
|
12621
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
12622
|
+
}
|
|
12623
|
+
|
|
12624
|
+
.crewlet-document-title-field::placeholder {
|
|
12625
|
+
color: var(--color-text-tertiary);
|
|
12626
|
+
opacity: 1;
|
|
12627
|
+
}
|
|
12628
|
+
|
|
12629
|
+
.crewlet-document-title-field:hover {
|
|
12630
|
+
border-block-end-color: var(--color-border-default);
|
|
12631
|
+
}
|
|
12632
|
+
|
|
12633
|
+
.crewlet-document-title-field:focus-visible {
|
|
12634
|
+
border-block-end-color: var(--color-focus);
|
|
12635
|
+
}
|
|
12636
|
+
|
|
12637
|
+
.crewlet-document-title-field[aria-invalid='true'] {
|
|
12638
|
+
border-block-end-color: var(--color-feedback-danger);
|
|
12639
|
+
}
|
|
12640
|
+
|
|
12641
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12642
|
+
.crewlet-document-title-field {
|
|
12643
|
+
transition: none;
|
|
12644
|
+
}
|
|
12645
|
+
}
|
|
12646
|
+
|
|
11634
12647
|
/*
|
|
11635
12648
|
* A TABLE CELL'S ALIGNMENT, read off `data-align` as well as off a style: an
|
|
11636
12649
|
* editor that may not write a style attribute under a strict policy marks a
|
|
@@ -11698,12 +12711,8 @@ svg.crewlet-datetime__chevron {
|
|
|
11698
12711
|
color: var(--color-text-primary);
|
|
11699
12712
|
}
|
|
11700
12713
|
|
|
11701
|
-
.crewlet-document [data-callout-body] > * + * {
|
|
11702
|
-
margin-block-start: var(--crewlet-document-gap);
|
|
11703
|
-
}
|
|
11704
|
-
|
|
11705
12714
|
|
|
11706
|
-
/* EditingStatus-
|
|
12715
|
+
/* EditingStatus-NNA2CKIL.css */
|
|
11707
12716
|
/*
|
|
11708
12717
|
* The editing status (EditingStatus.tsx): a word and a dot, in the bar's own
|
|
11709
12718
|
* small step, quiet until something is unsaved.
|
|
@@ -11751,10 +12760,12 @@ svg.crewlet-datetime__chevron {
|
|
|
11751
12760
|
/*
|
|
11752
12761
|
* THE WORDS FOLD AND THE DOT STAYS where room is short, hidden from the eye
|
|
11753
12762
|
* and still read by a screen reader, so the status says the same thing to
|
|
11754
|
-
* everyone. On a phone the state folds. On an artifact bar
|
|
11755
|
-
*
|
|
11756
|
-
*
|
|
11757
|
-
*
|
|
12763
|
+
* everyone. On a phone the state folds. On an artifact bar the title has the
|
|
12764
|
+
* row's room first: below 900px (a small laptop's bar beside the rail) the
|
|
12765
|
+
* state folds, since the dot already turns the accent once anything is
|
|
12766
|
+
* unsaved, so a title is not cut to two words to make room for the sentence;
|
|
12767
|
+
* on the narrow arrangement (below 640px, as ArtifactBar.css draws it)
|
|
12768
|
+
* "Editing" folds too, and Cancel and Save beside the dot say an edit is open.
|
|
11758
12769
|
*/
|
|
11759
12770
|
@media (width < 480px) {
|
|
11760
12771
|
.crewlet-editing-status__state {
|
|
@@ -11767,6 +12778,17 @@ svg.crewlet-datetime__chevron {
|
|
|
11767
12778
|
}
|
|
11768
12779
|
}
|
|
11769
12780
|
|
|
12781
|
+
@container crewlet-artifact-bar (width < 900px) {
|
|
12782
|
+
.crewlet-editing-status__state {
|
|
12783
|
+
position: absolute;
|
|
12784
|
+
width: 1px;
|
|
12785
|
+
height: 1px;
|
|
12786
|
+
margin: -1px;
|
|
12787
|
+
overflow: hidden;
|
|
12788
|
+
clip-path: inset(50%);
|
|
12789
|
+
}
|
|
12790
|
+
}
|
|
12791
|
+
|
|
11770
12792
|
@container crewlet-artifact-bar (width < 640px) {
|
|
11771
12793
|
.crewlet-editing-status__label,
|
|
11772
12794
|
.crewlet-editing-status__state {
|
|
@@ -13867,6 +14889,91 @@ svg.crewlet-datetime__chevron {
|
|
|
13867
14889
|
}
|
|
13868
14890
|
|
|
13869
14891
|
|
|
14892
|
+
/* LayersList-NQZEIPZB.css */
|
|
14893
|
+
/*
|
|
14894
|
+
* A canvas's list of layers (LayersList.tsx): a heading that stays, over one
|
|
14895
|
+
* line per entry that scrolls on its own.
|
|
14896
|
+
*/
|
|
14897
|
+
|
|
14898
|
+
.crewlet-layers-list {
|
|
14899
|
+
display: flex;
|
|
14900
|
+
flex-direction: column;
|
|
14901
|
+
gap: var(--spacing-2);
|
|
14902
|
+
min-width: 0;
|
|
14903
|
+
min-height: 0;
|
|
14904
|
+
}
|
|
14905
|
+
|
|
14906
|
+
.crewlet-layers-list__heading {
|
|
14907
|
+
flex: none;
|
|
14908
|
+
color: var(--color-text-tertiary);
|
|
14909
|
+
font-family: var(--font-family-sans);
|
|
14910
|
+
font-size: var(--font-size-compact);
|
|
14911
|
+
line-height: var(--font-line-height-normal);
|
|
14912
|
+
}
|
|
14913
|
+
|
|
14914
|
+
/*
|
|
14915
|
+
* THE ENTRIES HANG INTO THE GUTTER by their own padding and edge, so their
|
|
14916
|
+
* letters stand on the list's edge, in line with the heading above them.
|
|
14917
|
+
*/
|
|
14918
|
+
.crewlet-layers-list__items {
|
|
14919
|
+
flex: 1 1 auto;
|
|
14920
|
+
min-height: 0;
|
|
14921
|
+
margin: 0;
|
|
14922
|
+
margin-inline-start: calc(-1 * (var(--spacing-2) + 2px));
|
|
14923
|
+
padding: 0;
|
|
14924
|
+
overflow-y: auto;
|
|
14925
|
+
list-style: none;
|
|
14926
|
+
}
|
|
14927
|
+
|
|
14928
|
+
/*
|
|
14929
|
+
* The current entry's mark is held on every entry in the resting ink, as the
|
|
14930
|
+
* document outline's is, so nothing moves when the pick does. The radius is
|
|
14931
|
+
* the control step's on the end the mark does not take.
|
|
14932
|
+
*/
|
|
14933
|
+
.crewlet-layers-list__item {
|
|
14934
|
+
display: block;
|
|
14935
|
+
box-sizing: border-box;
|
|
14936
|
+
width: 100%;
|
|
14937
|
+
overflow: hidden;
|
|
14938
|
+
margin: 0;
|
|
14939
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
14940
|
+
border: none;
|
|
14941
|
+
border-inline-start: 2px solid transparent;
|
|
14942
|
+
border-start-start-radius: 0;
|
|
14943
|
+
border-end-start-radius: 0;
|
|
14944
|
+
border-start-end-radius: var(--radius-md);
|
|
14945
|
+
border-end-end-radius: var(--radius-md);
|
|
14946
|
+
background: transparent;
|
|
14947
|
+
color: var(--color-text-secondary);
|
|
14948
|
+
font-family: var(--font-family-sans);
|
|
14949
|
+
font-size: var(--font-size-compact);
|
|
14950
|
+
font-weight: var(--font-weight-regular);
|
|
14951
|
+
line-height: var(--font-line-height-normal);
|
|
14952
|
+
text-align: start;
|
|
14953
|
+
text-overflow: ellipsis;
|
|
14954
|
+
white-space: nowrap;
|
|
14955
|
+
cursor: pointer;
|
|
14956
|
+
}
|
|
14957
|
+
|
|
14958
|
+
.crewlet-layers-list__item:hover {
|
|
14959
|
+
background: var(--color-surface-hover);
|
|
14960
|
+
color: var(--color-text-primary);
|
|
14961
|
+
}
|
|
14962
|
+
|
|
14963
|
+
/* The accent edge every current row in the system takes, in the primary ink.
|
|
14964
|
+
A border, so forced colours keep it. */
|
|
14965
|
+
.crewlet-layers-list__item[aria-current='true'] {
|
|
14966
|
+
border-inline-start-color: var(--color-brand-accent);
|
|
14967
|
+
color: var(--color-text-primary);
|
|
14968
|
+
}
|
|
14969
|
+
|
|
14970
|
+
/* The ring lies inside the entry, where the scroller beside it cannot cut it. */
|
|
14971
|
+
.crewlet-layers-list__item:focus-visible {
|
|
14972
|
+
outline: 2px solid var(--color-focus);
|
|
14973
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
14974
|
+
}
|
|
14975
|
+
|
|
14976
|
+
|
|
13870
14977
|
/* Layout-ZBEGLXAE.css */
|
|
13871
14978
|
/*
|
|
13872
14979
|
* Stack, Inline, Spacer and AutoGrid.
|
|
@@ -14754,6 +15861,74 @@ svg.crewlet-datetime__chevron {
|
|
|
14754
15861
|
}
|
|
14755
15862
|
|
|
14756
15863
|
|
|
15864
|
+
/* LivePreview-SRO7KHO4.css */
|
|
15865
|
+
/*
|
|
15866
|
+
* A live preview: the stand-in and the live layer stacked in one box. The box
|
|
15867
|
+
* takes its size from its parent (a card's preview area), so it fills it and
|
|
15868
|
+
* clips whatever the content lays out past its edge.
|
|
15869
|
+
*/
|
|
15870
|
+
|
|
15871
|
+
.crewlet-live-preview {
|
|
15872
|
+
position: relative;
|
|
15873
|
+
display: block;
|
|
15874
|
+
width: 100%;
|
|
15875
|
+
height: 100%;
|
|
15876
|
+
overflow: hidden;
|
|
15877
|
+
contain: layout paint;
|
|
15878
|
+
}
|
|
15879
|
+
|
|
15880
|
+
.crewlet-live-preview__fallback {
|
|
15881
|
+
position: absolute;
|
|
15882
|
+
inset: 0;
|
|
15883
|
+
display: flex;
|
|
15884
|
+
transition: opacity var(--motion-duration-base) var(--motion-easing-out);
|
|
15885
|
+
}
|
|
15886
|
+
|
|
15887
|
+
.crewlet-live-preview__live {
|
|
15888
|
+
position: absolute;
|
|
15889
|
+
inset: 0;
|
|
15890
|
+
display: block;
|
|
15891
|
+
overflow: hidden;
|
|
15892
|
+
opacity: 0;
|
|
15893
|
+
pointer-events: none;
|
|
15894
|
+
user-select: none;
|
|
15895
|
+
transition: opacity var(--motion-duration-base) var(--motion-easing-out);
|
|
15896
|
+
}
|
|
15897
|
+
|
|
15898
|
+
/* LAID OUT AT ITS OWN SIZE from the top left corner, and scaled from there:
|
|
15899
|
+
to the box's width, its top left the box's, or whole and centred. */
|
|
15900
|
+
.crewlet-preview-scale {
|
|
15901
|
+
position: absolute;
|
|
15902
|
+
inset: 0;
|
|
15903
|
+
display: block;
|
|
15904
|
+
overflow: hidden;
|
|
15905
|
+
}
|
|
15906
|
+
|
|
15907
|
+
.crewlet-preview-scale__layer {
|
|
15908
|
+
position: absolute;
|
|
15909
|
+
top: 0;
|
|
15910
|
+
left: 0;
|
|
15911
|
+
display: block;
|
|
15912
|
+
overflow: hidden;
|
|
15913
|
+
transform-origin: 0 0;
|
|
15914
|
+
}
|
|
15915
|
+
|
|
15916
|
+
.crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__live {
|
|
15917
|
+
opacity: 1;
|
|
15918
|
+
}
|
|
15919
|
+
|
|
15920
|
+
.crewlet-live-preview[data-state='ready'] > .crewlet-live-preview__fallback {
|
|
15921
|
+
opacity: 0;
|
|
15922
|
+
}
|
|
15923
|
+
|
|
15924
|
+
@media (prefers-reduced-motion: reduce) {
|
|
15925
|
+
.crewlet-live-preview__fallback,
|
|
15926
|
+
.crewlet-live-preview__live {
|
|
15927
|
+
transition: none;
|
|
15928
|
+
}
|
|
15929
|
+
}
|
|
15930
|
+
|
|
15931
|
+
|
|
14757
15932
|
/* MarkdownEditor-WOKV7CLK.css */
|
|
14758
15933
|
/*
|
|
14759
15934
|
* Writing markdown (MarkdownEditor.tsx): the bar, the source or its preview,
|
|
@@ -15401,7 +16576,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15401
16576
|
}
|
|
15402
16577
|
|
|
15403
16578
|
|
|
15404
|
-
/* Modal-
|
|
16579
|
+
/* Modal-7MWRCWAI.css */
|
|
15405
16580
|
/*
|
|
15406
16581
|
* The modal surface: the veil, the frame, and the three bands inside it.
|
|
15407
16582
|
*
|
|
@@ -15688,6 +16863,36 @@ svg.crewlet-datetime__chevron {
|
|
|
15688
16863
|
border-bottom: 1px solid var(--color-border-default);
|
|
15689
16864
|
}
|
|
15690
16865
|
|
|
16866
|
+
/*
|
|
16867
|
+
* WITH A SUBTITLE, THE HEAD'S CONTROLS SIT ON THE TITLE'S LINE. Centred on
|
|
16868
|
+
* the whole head, the mark, the actions and the close control floated beside
|
|
16869
|
+
* the description, belonging to neither line; top-aligned, they hung from the
|
|
16870
|
+
* head's top edge, a few pixels above the title they belong to. So the row
|
|
16871
|
+
* aligns to the top and each control is centred on the title's first line:
|
|
16872
|
+
* the mark and the actions in a box one title line tall (what is taller
|
|
16873
|
+
* overflows it evenly, into the head's padding), and a lone control by the
|
|
16874
|
+
* margin that puts its centre there. A dialog with no subtitle keeps the
|
|
16875
|
+
* centring above, where the two are the same thing.
|
|
16876
|
+
*
|
|
16877
|
+
* DIALOGS ONLY. A sheet's head is a bar at the shell's top-bar height and
|
|
16878
|
+
* centres what it holds on the bar, as the bar behind it does.
|
|
16879
|
+
*/
|
|
16880
|
+
.crewlet-modal__header--subtitled {
|
|
16881
|
+
--crewlet-modal-title-line: calc(var(--font-size-sm) * var(--font-line-height-tight));
|
|
16882
|
+
align-items: flex-start;
|
|
16883
|
+
}
|
|
16884
|
+
|
|
16885
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__icon,
|
|
16886
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__actions {
|
|
16887
|
+
align-items: center;
|
|
16888
|
+
height: var(--crewlet-modal-title-line);
|
|
16889
|
+
}
|
|
16890
|
+
|
|
16891
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__close,
|
|
16892
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__back {
|
|
16893
|
+
margin-block: calc((var(--crewlet-modal-title-line) - var(--size-control-md)) / 2);
|
|
16894
|
+
}
|
|
16895
|
+
|
|
15691
16896
|
/*
|
|
15692
16897
|
* A SHEET IS COMMITTED FROM ITS HEAD, so its head is the taller band, not the
|
|
15693
16898
|
* tighter one. It stands at the shell's own top-bar height, which is what puts
|
|
@@ -16021,7 +17226,7 @@ svg.crewlet-datetime__chevron {
|
|
|
16021
17226
|
}
|
|
16022
17227
|
|
|
16023
17228
|
|
|
16024
|
-
/* Note-
|
|
17229
|
+
/* Note-WI5MLZOO.css */
|
|
16025
17230
|
/*
|
|
16026
17231
|
* Note: words on a coloured paper. Each hue pairs its fill with its own ink.
|
|
16027
17232
|
*/
|
|
@@ -16084,6 +17289,19 @@ svg.crewlet-datetime__chevron {
|
|
|
16084
17289
|
text-decoration: underline;
|
|
16085
17290
|
text-underline-offset: 2px;
|
|
16086
17291
|
}
|
|
17292
|
+
/*
|
|
17293
|
+
* PARAGRAPHS STAND APART, by the step a note's heading stands from its words.
|
|
17294
|
+
* A host that resets a paragraph's margins (as an application's base sheet
|
|
17295
|
+
* does) ran two paragraphs into what read as one that wrapped early.
|
|
17296
|
+
*/
|
|
17297
|
+
.crewlet-note :is(p, ul, ol) {
|
|
17298
|
+
margin-block: 0;
|
|
17299
|
+
}
|
|
17300
|
+
|
|
17301
|
+
.crewlet-note :is(p, ul, ol) + :is(p, ul, ol) {
|
|
17302
|
+
margin-block-start: var(--spacing-2);
|
|
17303
|
+
}
|
|
17304
|
+
|
|
16087
17305
|
.crewlet-note > :first-child {
|
|
16088
17306
|
margin-top: 0;
|
|
16089
17307
|
}
|
|
@@ -17926,13 +19144,21 @@ svg.crewlet-datetime__chevron {
|
|
|
17926
19144
|
}
|
|
17927
19145
|
|
|
17928
19146
|
|
|
17929
|
-
/* PresenceStack-
|
|
19147
|
+
/* PresenceStack-FJJQVH74.css */
|
|
17930
19148
|
/*
|
|
17931
19149
|
* Who is here (PresenceStack.tsx), on the avatar stack's own geometry: the
|
|
17932
19150
|
* overlap and the counted chip are the stack's. What this adds is the ring in
|
|
17933
19151
|
* each present collaborator's hue, outside the cut-out, and the idle fade.
|
|
17934
19152
|
*/
|
|
17935
19153
|
|
|
19154
|
+
/* HOW FAR THE RING REACHES past each badge: the cut-out, then the hue. The
|
|
19155
|
+
ring is drawn outside the stack's own box, so a container that places the
|
|
19156
|
+
stack flush to an edge (or clips) keeps this much clear round it. */
|
|
19157
|
+
.crewlet-presence-stack {
|
|
19158
|
+
--crewlet-presence-stack-cutout: 2px;
|
|
19159
|
+
--crewlet-presence-stack-reach: calc(var(--crewlet-presence-stack-cutout) * 2);
|
|
19160
|
+
}
|
|
19161
|
+
|
|
17936
19162
|
/* The wrapper (a span, or a button when badges select) carries no edge of its
|
|
17937
19163
|
own: the cut-out and the hue ring are drawn on the badge inside it, which
|
|
17938
19164
|
has the badge's own outline to follow. */
|
|
@@ -17965,15 +19191,15 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17965
19191
|
}
|
|
17966
19192
|
|
|
17967
19193
|
.crewlet-presence-stack .crewlet-presence-stack__badge {
|
|
17968
|
-
box-shadow: 0 0 0
|
|
19194
|
+
box-shadow: 0 0 0 var(--crewlet-presence-stack-cutout) var(--crewlet-avatar-stack-ground);
|
|
17969
19195
|
}
|
|
17970
19196
|
|
|
17971
19197
|
/* The hue ring sits outside the cut-out, so it reads as a ring round the
|
|
17972
19198
|
badge rather than a stroke on it. */
|
|
17973
19199
|
.crewlet-presence-stack .crewlet-presence-stack__badge--present {
|
|
17974
19200
|
box-shadow:
|
|
17975
|
-
0 0 0
|
|
17976
|
-
0 0 0
|
|
19201
|
+
0 0 0 var(--crewlet-presence-stack-cutout) var(--crewlet-avatar-stack-ground),
|
|
19202
|
+
0 0 0 var(--crewlet-presence-stack-reach) var(--crewlet-presence-hue);
|
|
17977
19203
|
}
|
|
17978
19204
|
|
|
17979
19205
|
.crewlet-presence-stack .crewlet-presence-stack__badge--idle {
|
|
@@ -17988,48 +19214,58 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17988
19214
|
}
|
|
17989
19215
|
|
|
17990
19216
|
|
|
17991
|
-
/* PresenterView-
|
|
19217
|
+
/* PresenterView-T3EXIQ5S.css */
|
|
17992
19218
|
/*
|
|
17993
19219
|
* PresenterView: the presenter's own screen beside the room's.
|
|
17994
19220
|
*
|
|
17995
|
-
* The
|
|
17996
|
-
*
|
|
19221
|
+
* The room's slide is as large as fits the column with its controls right
|
|
19222
|
+
* under it, drawn as the slide itself rather than letterboxed in a well. The
|
|
19223
|
+
* notes take the space a glance needs: a large, readable size and their own
|
|
19224
|
+
* scroll, so a long note never pushes the next slide or the timer away.
|
|
17997
19225
|
*/
|
|
17998
19226
|
|
|
17999
19227
|
.crewlet-presenter {
|
|
18000
19228
|
display: grid;
|
|
18001
19229
|
grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr);
|
|
18002
|
-
gap: var(--spacing-
|
|
19230
|
+
gap: var(--spacing-5);
|
|
18003
19231
|
height: 100%;
|
|
18004
19232
|
min-height: 0;
|
|
18005
19233
|
padding: var(--spacing-4);
|
|
19234
|
+
box-sizing: border-box;
|
|
18006
19235
|
background: var(--color-surface-background);
|
|
18007
19236
|
color: var(--color-text-primary);
|
|
18008
19237
|
}
|
|
18009
19238
|
|
|
19239
|
+
/* THE SLIDE AS LARGE AS FITS, measured against the room under its caption
|
|
19240
|
+
(a size container), less the controls under it: the largest box of the
|
|
19241
|
+
slide's shape that fits both ways, so nothing is letterboxed and the
|
|
19242
|
+
controls sit on the slide's foot wherever that is. */
|
|
18010
19243
|
.crewlet-presenter__main {
|
|
18011
19244
|
display: flex;
|
|
18012
19245
|
flex-direction: column;
|
|
18013
|
-
gap: var(--spacing-
|
|
19246
|
+
gap: var(--spacing-2);
|
|
19247
|
+
min-width: 0;
|
|
18014
19248
|
min-height: 0;
|
|
19249
|
+
margin: 0;
|
|
18015
19250
|
}
|
|
18016
19251
|
|
|
18017
|
-
.crewlet-
|
|
19252
|
+
.crewlet-presenter__screen {
|
|
19253
|
+
container-type: size;
|
|
18018
19254
|
flex: 1;
|
|
18019
|
-
min-height: 0;
|
|
18020
|
-
border-radius: var(--radius-md);
|
|
18021
|
-
}
|
|
18022
|
-
|
|
18023
|
-
.crewlet-presenter__controls {
|
|
18024
19255
|
display: flex;
|
|
19256
|
+
flex-direction: column;
|
|
18025
19257
|
align-items: center;
|
|
18026
|
-
justify-content: center;
|
|
18027
19258
|
gap: var(--spacing-3);
|
|
19259
|
+
min-height: 0;
|
|
18028
19260
|
}
|
|
18029
19261
|
|
|
18030
|
-
.crewlet-
|
|
18031
|
-
|
|
18032
|
-
|
|
19262
|
+
.crewlet-presenter__screen > .crewlet-slide-stage {
|
|
19263
|
+
flex: none;
|
|
19264
|
+
width: min(
|
|
19265
|
+
100cqw,
|
|
19266
|
+
(100cqh - var(--size-control-sm) - var(--spacing-3)) * var(--crewlet-presenter-ratio, 1.7778)
|
|
19267
|
+
);
|
|
19268
|
+
border-radius: var(--radius-md);
|
|
18033
19269
|
}
|
|
18034
19270
|
|
|
18035
19271
|
.crewlet-presenter__side {
|
|
@@ -18039,17 +19275,31 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
18039
19275
|
min-height: 0;
|
|
18040
19276
|
}
|
|
18041
19277
|
|
|
18042
|
-
.crewlet-presenter__next
|
|
18043
|
-
|
|
18044
|
-
|
|
19278
|
+
.crewlet-presenter__next,
|
|
19279
|
+
.crewlet-presenter__notes {
|
|
19280
|
+
display: flex;
|
|
19281
|
+
flex-direction: column;
|
|
19282
|
+
gap: var(--spacing-2);
|
|
19283
|
+
min-height: 0;
|
|
19284
|
+
margin: 0;
|
|
18045
19285
|
}
|
|
18046
19286
|
|
|
19287
|
+
.crewlet-presenter__caption {
|
|
19288
|
+
margin: 0;
|
|
19289
|
+
}
|
|
19290
|
+
|
|
19291
|
+
/* THE END HOLDS THE NEXT SLIDE'S PLACE at its shape, so the timer and the
|
|
19292
|
+
notes under it stay where they were on the last slide. */
|
|
18047
19293
|
.crewlet-presenter__end {
|
|
19294
|
+
display: flex;
|
|
19295
|
+
align-items: center;
|
|
19296
|
+
justify-content: center;
|
|
19297
|
+
aspect-ratio: var(--crewlet-presenter-ratio, 1.7778);
|
|
18048
19298
|
margin: 0;
|
|
18049
|
-
|
|
18050
|
-
border: 1px dashed var(--color-border-default);
|
|
19299
|
+
border: 1px dashed var(--color-border-strong);
|
|
18051
19300
|
border-radius: var(--radius-sm);
|
|
18052
19301
|
color: var(--color-text-tertiary);
|
|
19302
|
+
font-size: var(--font-size-sm);
|
|
18053
19303
|
text-align: center;
|
|
18054
19304
|
}
|
|
18055
19305
|
|
|
@@ -18068,9 +19318,13 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
18068
19318
|
|
|
18069
19319
|
.crewlet-presenter__notes {
|
|
18070
19320
|
flex: 1;
|
|
19321
|
+
}
|
|
19322
|
+
|
|
19323
|
+
.crewlet-presenter__notes-body {
|
|
19324
|
+
flex: 1;
|
|
18071
19325
|
min-height: 0;
|
|
18072
19326
|
overflow: auto;
|
|
18073
|
-
padding: var(--spacing-3);
|
|
19327
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
18074
19328
|
border-radius: var(--radius-md);
|
|
18075
19329
|
background: var(--color-surface-subtle);
|
|
18076
19330
|
font-size: var(--font-size-lg);
|
|
@@ -18078,7 +19332,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
18078
19332
|
white-space: pre-wrap;
|
|
18079
19333
|
}
|
|
18080
19334
|
|
|
18081
|
-
.crewlet-presenter__notes p {
|
|
19335
|
+
.crewlet-presenter__notes-body p {
|
|
18082
19336
|
margin: 0;
|
|
18083
19337
|
}
|
|
18084
19338
|
|
|
@@ -18086,11 +19340,27 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
18086
19340
|
color: var(--color-text-tertiary);
|
|
18087
19341
|
}
|
|
18088
19342
|
|
|
19343
|
+
/* ONE COLUMN on a narrow screen: the page scrolls, so the slide is as wide as
|
|
19344
|
+
the column and the notes as tall as they are. */
|
|
18089
19345
|
@media (max-width: 48rem) {
|
|
18090
19346
|
.crewlet-presenter {
|
|
18091
19347
|
grid-template-columns: minmax(0, 1fr);
|
|
18092
19348
|
height: auto;
|
|
18093
19349
|
}
|
|
19350
|
+
|
|
19351
|
+
.crewlet-presenter__screen {
|
|
19352
|
+
container-type: normal;
|
|
19353
|
+
flex: none;
|
|
19354
|
+
}
|
|
19355
|
+
|
|
19356
|
+
.crewlet-presenter__screen > .crewlet-slide-stage {
|
|
19357
|
+
width: 100%;
|
|
19358
|
+
}
|
|
19359
|
+
|
|
19360
|
+
.crewlet-presenter__notes-body {
|
|
19361
|
+
flex: none;
|
|
19362
|
+
overflow: visible;
|
|
19363
|
+
}
|
|
18094
19364
|
}
|
|
18095
19365
|
|
|
18096
19366
|
|
|
@@ -19178,15 +20448,11 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19178
20448
|
}
|
|
19179
20449
|
|
|
19180
20450
|
|
|
19181
|
-
/* SandboxedFrame-
|
|
20451
|
+
/* SandboxedFrame-P5NASXB7.css */
|
|
19182
20452
|
/*
|
|
19183
20453
|
* The frame fills the box it is given. The page around it does not scroll
|
|
19184
20454
|
* round the artifact: the artifact scrolls inside its own document, which is
|
|
19185
20455
|
* what a viewer body that holds one wants.
|
|
19186
|
-
*
|
|
19187
|
-
* The region takes focus when the frame hands it back, and keeps the
|
|
19188
|
-
* document's own focus treatment then: a reader who just left a page by
|
|
19189
|
-
* keyboard needs to see where they landed.
|
|
19190
20456
|
*/
|
|
19191
20457
|
|
|
19192
20458
|
.crewlet-sandboxed-frame {
|
|
@@ -19210,6 +20476,10 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19210
20476
|
background: transparent;
|
|
19211
20477
|
}
|
|
19212
20478
|
|
|
20479
|
+
/* THE PLACEHOLDER AND THE END STATES SIT AT ONE INSET, the frame's margin,
|
|
20480
|
+
so a reader who watches a page load and then fail sees the callout take
|
|
20481
|
+
the placeholder's place rather than jump beside it. */
|
|
20482
|
+
|
|
19213
20483
|
/* Kept out of sight while it starts, so a document that has not painted in
|
|
19214
20484
|
the reader's palette yet is never what they see. It still loads. */
|
|
19215
20485
|
.crewlet-sandboxed-frame[data-state='loading'] .crewlet-sandboxed-frame__frame {
|
|
@@ -19220,7 +20490,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19220
20490
|
position: absolute;
|
|
19221
20491
|
inset: 0;
|
|
19222
20492
|
display: flex;
|
|
19223
|
-
padding: var(--spacing-
|
|
20493
|
+
padding: var(--spacing-4);
|
|
19224
20494
|
}
|
|
19225
20495
|
|
|
19226
20496
|
.crewlet-sandboxed-frame__end {
|
|
@@ -19230,6 +20500,28 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19230
20500
|
padding: var(--spacing-4);
|
|
19231
20501
|
}
|
|
19232
20502
|
|
|
20503
|
+
/* THE REGION TAKES FOCUS WHEN THE FRAME HANDS IT BACK, and a reader who just
|
|
20504
|
+
left a page by keyboard needs to see where they landed. The document's own
|
|
20505
|
+
ring sits outside the box, where a frame filling a clipping card loses it,
|
|
20506
|
+
so the region draws its ring inside its edge, on a layer above the frame. */
|
|
20507
|
+
.crewlet-sandboxed-frame:focus-visible {
|
|
20508
|
+
/* Transparent rather than none: forced-colors mode paints a transparent
|
|
20509
|
+
outline in the system ink, so the region's edge is never left bare. */
|
|
20510
|
+
outline: 2px solid transparent;
|
|
20511
|
+
}
|
|
20512
|
+
|
|
20513
|
+
.crewlet-sandboxed-frame:focus-visible::after {
|
|
20514
|
+
content: '';
|
|
20515
|
+
position: absolute;
|
|
20516
|
+
inset: 0;
|
|
20517
|
+
z-index: 1;
|
|
20518
|
+
border-radius: inherit;
|
|
20519
|
+
/* An outline, never a shadow: forced-colors mode keeps only outlines. */
|
|
20520
|
+
outline: 2px solid var(--color-focus);
|
|
20521
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
20522
|
+
pointer-events: none;
|
|
20523
|
+
}
|
|
20524
|
+
|
|
19233
20525
|
|
|
19234
20526
|
/* SearchTrigger-KIZLWBEH.css */
|
|
19235
20527
|
/*
|
|
@@ -19349,7 +20641,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19349
20641
|
}
|
|
19350
20642
|
|
|
19351
20643
|
|
|
19352
|
-
/* Section-
|
|
20644
|
+
/* Section-O5AHGSOG.css */
|
|
19353
20645
|
/*
|
|
19354
20646
|
* Section, the vertical rhythm band. One spacing scale keeps the cadence
|
|
19355
20647
|
* between page sections consistent, and collapses on small viewports.
|
|
@@ -19408,7 +20700,11 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19408
20700
|
.crewlet-section__title {
|
|
19409
20701
|
margin: 0;
|
|
19410
20702
|
font-family: var(--font-family-display);
|
|
19411
|
-
|
|
20703
|
+
/* THE REGISTER IS THE CONTAINER'S TO SET. A screen's band heads at the large
|
|
20704
|
+
step; a side panel, whose own title is the small step, sets
|
|
20705
|
+
`--crewlet-section-title-size` so the sections inside it never outrank the
|
|
20706
|
+
heading they sit under. */
|
|
20707
|
+
font-size: var(--crewlet-section-title-size, var(--font-size-lg));
|
|
19412
20708
|
font-weight: var(--font-weight-semibold);
|
|
19413
20709
|
line-height: var(--font-line-height-normal);
|
|
19414
20710
|
letter-spacing: var(--font-letter-spacing-tight);
|
|
@@ -19467,15 +20763,34 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19467
20763
|
padding-block: var(--spacing-10);
|
|
19468
20764
|
}
|
|
19469
20765
|
|
|
19470
|
-
/*
|
|
19471
|
-
* Narrow: the sentence moves under the heading rather than competing with it
|
|
19472
|
-
* for a line that has room for neither.
|
|
19473
|
-
*/
|
|
19474
20766
|
.crewlet-section__header {
|
|
19475
20767
|
flex-wrap: wrap;
|
|
20768
|
+
row-gap: var(--spacing-1);
|
|
20769
|
+
}
|
|
20770
|
+
|
|
20771
|
+
.crewlet-section__description {
|
|
20772
|
+
order: 1;
|
|
20773
|
+
white-space: normal;
|
|
20774
|
+
flex-basis: 100%;
|
|
20775
|
+
}
|
|
20776
|
+
}
|
|
20777
|
+
|
|
20778
|
+
/*
|
|
20779
|
+
* NARROW: the sentence moves under the heading rather than competing with it
|
|
20780
|
+
* for a line that has room for neither, and the actions stay on the heading's
|
|
20781
|
+
* line. Measured on the column the section sits in where it sits in a size
|
|
20782
|
+
* container (a side panel, a screen's content column), since a panel beside a
|
|
20783
|
+
* wide window is as narrow as a phone; the window's width above is the answer
|
|
20784
|
+
* where there is no container to ask.
|
|
20785
|
+
*/
|
|
20786
|
+
@container (width < 36rem) {
|
|
20787
|
+
.crewlet-section__header {
|
|
20788
|
+
flex-wrap: wrap;
|
|
20789
|
+
row-gap: var(--spacing-1);
|
|
19476
20790
|
}
|
|
19477
20791
|
|
|
19478
20792
|
.crewlet-section__description {
|
|
20793
|
+
order: 1;
|
|
19479
20794
|
white-space: normal;
|
|
19480
20795
|
flex-basis: 100%;
|
|
19481
20796
|
}
|
|
@@ -19788,7 +21103,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19788
21103
|
}
|
|
19789
21104
|
|
|
19790
21105
|
|
|
19791
|
-
/* Select-
|
|
21106
|
+
/* Select-A54YS5EP.css */
|
|
19792
21107
|
/*
|
|
19793
21108
|
* Select: one chrome over two controls, and the product's only dropdown.
|
|
19794
21109
|
*
|
|
@@ -19888,6 +21203,35 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19888
21203
|
border-color: var(--color-feedback-danger);
|
|
19889
21204
|
}
|
|
19890
21205
|
|
|
21206
|
+
/*
|
|
21207
|
+
* QUIET: no boundary and no fill at rest, the hover overlay under the
|
|
21208
|
+
* pointer, and the ring on focus as every field draws it. It sizes to its
|
|
21209
|
+
* answer with no floor, since a quiet picker in a toolbar reads as its words.
|
|
21210
|
+
* A quiet filter that is on takes the accent's soft fill under its accent ink,
|
|
21211
|
+
* so "this narrows the list" still shows without a box around it.
|
|
21212
|
+
*/
|
|
21213
|
+
.crewlet-select--quiet {
|
|
21214
|
+
--crewlet-select-auto-min-width: 0px;
|
|
21215
|
+
|
|
21216
|
+
border-color: transparent;
|
|
21217
|
+
background-color: transparent;
|
|
21218
|
+
}
|
|
21219
|
+
|
|
21220
|
+
.crewlet-select--quiet:hover {
|
|
21221
|
+
border-color: transparent;
|
|
21222
|
+
background-color: var(--color-surface-hover);
|
|
21223
|
+
}
|
|
21224
|
+
|
|
21225
|
+
.crewlet-select--quiet.is-open {
|
|
21226
|
+
background-color: var(--color-surface-hover);
|
|
21227
|
+
}
|
|
21228
|
+
|
|
21229
|
+
.crewlet-select--quiet.is-active,
|
|
21230
|
+
.crewlet-select--quiet.is-active:hover {
|
|
21231
|
+
border-color: transparent;
|
|
21232
|
+
background-color: var(--color-brand-accent-soft);
|
|
21233
|
+
}
|
|
21234
|
+
|
|
19891
21235
|
/* A refused picker keeps its colour while the reader is in it: the ring
|
|
19892
21236
|
covers the boundary, so a focus-coloured one would paint out the refusal.
|
|
19893
21237
|
See Input.css. */
|
|
@@ -20225,7 +21569,7 @@ svg.crewlet-select__chevron {
|
|
|
20225
21569
|
}
|
|
20226
21570
|
|
|
20227
21571
|
|
|
20228
|
-
/* ShareDialog-
|
|
21572
|
+
/* ShareDialog-4QDCBWMH.css */
|
|
20229
21573
|
/*
|
|
20230
21574
|
* Three blocks under the title: who to add and at what role, who has access,
|
|
20231
21575
|
* and what the whole company may do. Each row of the audience is the badge,
|
|
@@ -20244,6 +21588,10 @@ svg.crewlet-select__chevron {
|
|
|
20244
21588
|
display: flex;
|
|
20245
21589
|
flex-direction: column;
|
|
20246
21590
|
gap: var(--spacing-2);
|
|
21591
|
+
/* A BLOCK'S WORTH OF ROOM ABOVE EACH HEADING, over the body's own gap: at
|
|
21592
|
+
the gap alone "Who has access" sat as close under the add field as the
|
|
21593
|
+
role select beside it, and read as that field's label. */
|
|
21594
|
+
padding-block-start: var(--spacing-2);
|
|
20247
21595
|
}
|
|
20248
21596
|
|
|
20249
21597
|
.crewlet-share-dialog__heading {
|
|
@@ -20315,11 +21663,19 @@ svg.crewlet-select__chevron {
|
|
|
20315
21663
|
}
|
|
20316
21664
|
|
|
20317
21665
|
.crewlet-share-dialog__note,
|
|
21666
|
+
.crewlet-share-dialog__invalid,
|
|
20318
21667
|
.crewlet-share-dialog__refusal {
|
|
20319
21668
|
grid-column: 2 / -1;
|
|
20320
21669
|
font-size: var(--font-size-xs);
|
|
20321
21670
|
}
|
|
20322
21671
|
|
|
21672
|
+
/* A SHARE THAT REACHES NOBODY says why in the warning ink, the state a person
|
|
21673
|
+
is asked to act on, and its "No access" stands in the quiet ink a role
|
|
21674
|
+
would. */
|
|
21675
|
+
.crewlet-share-dialog__invalid {
|
|
21676
|
+
color: var(--color-feedback-warning-ink);
|
|
21677
|
+
}
|
|
21678
|
+
|
|
20323
21679
|
.crewlet-share-dialog__note {
|
|
20324
21680
|
color: var(--color-text-tertiary);
|
|
20325
21681
|
}
|
|
@@ -20374,7 +21730,7 @@ svg.crewlet-select__chevron {
|
|
|
20374
21730
|
}
|
|
20375
21731
|
|
|
20376
21732
|
|
|
20377
|
-
/* SheetGrid-
|
|
21733
|
+
/* SheetGrid-GDPCCZ4V.css */
|
|
20378
21734
|
/*
|
|
20379
21735
|
* The editable sheet (SheetGrid.tsx) and its cells (cells.tsx).
|
|
20380
21736
|
*
|
|
@@ -20390,6 +21746,8 @@ svg.crewlet-select__chevron {
|
|
|
20390
21746
|
|
|
20391
21747
|
.crewlet-sheet-grid {
|
|
20392
21748
|
--crewlet-sheet-row-height: var(--size-sheet-row);
|
|
21749
|
+
/* The history control: a target-sized button, which its room in the cell is sized from. */
|
|
21750
|
+
--crewlet-sheet-history-size: var(--size-target-min);
|
|
20393
21751
|
position: relative;
|
|
20394
21752
|
display: flex;
|
|
20395
21753
|
flex-direction: column;
|
|
@@ -20397,7 +21755,33 @@ svg.crewlet-select__chevron {
|
|
|
20397
21755
|
min-height: 0;
|
|
20398
21756
|
color: var(--color-text-primary);
|
|
20399
21757
|
font-family: var(--font-family-sans);
|
|
20400
|
-
|
|
21758
|
+
/* Values at the compact step, a grid's own register: the headers stay a
|
|
21759
|
+
step under them, in sentence case. */
|
|
21760
|
+
font-size: var(--font-size-compact);
|
|
21761
|
+
}
|
|
21762
|
+
|
|
21763
|
+
/* THE MEASURING ROW: each sized column's header and sampled values, drawn by
|
|
21764
|
+
the real header and cell rules at their natural width, out of sight and out
|
|
21765
|
+
of reach. The grid reads each one's widest part as the column's width. */
|
|
21766
|
+
.crewlet-sheet-grid__measure {
|
|
21767
|
+
position: absolute;
|
|
21768
|
+
inset-block-start: 0;
|
|
21769
|
+
inset-inline-start: 0;
|
|
21770
|
+
width: 0;
|
|
21771
|
+
height: 0;
|
|
21772
|
+
overflow: hidden;
|
|
21773
|
+
visibility: hidden;
|
|
21774
|
+
pointer-events: none;
|
|
21775
|
+
}
|
|
21776
|
+
|
|
21777
|
+
.crewlet-sheet-grid__measure > div {
|
|
21778
|
+
display: flex;
|
|
21779
|
+
flex-direction: column;
|
|
21780
|
+
width: max-content;
|
|
21781
|
+
}
|
|
21782
|
+
|
|
21783
|
+
.crewlet-sheet-grid__measure :is(.crewlet-sheet-grid__header, .crewlet-sheet-grid__cell) {
|
|
21784
|
+
width: max-content;
|
|
20401
21785
|
}
|
|
20402
21786
|
|
|
20403
21787
|
/* Measured by the component: the resolved row height at the current density. */
|
|
@@ -20426,9 +21810,16 @@ svg.crewlet-select__chevron {
|
|
|
20426
21810
|
}
|
|
20427
21811
|
|
|
20428
21812
|
/* AS TALL AS ITS ROWS (fit="content"): the component writes the height, the
|
|
20429
|
-
page may cap it, and the grid never grows past the height it was given.
|
|
21813
|
+
page may cap it, and the grid never grows past the height it was given.
|
|
21814
|
+
IN A BOUNDED COLUMN IT GIVES WAY: the scroller shrinks to the room its
|
|
21815
|
+
container has left under whatever stands above it (a bar that wraps on a
|
|
21816
|
+
phone included), so the foot lands on the container's edge rather than
|
|
21817
|
+
on a guess of how tall the rest is. It never shrinks below the floor the
|
|
21818
|
+
page sets (--crewlet-sheet-min-height), and never below its own rows'
|
|
21819
|
+
height, so a short sheet is not stretched into an empty slab. */
|
|
20430
21820
|
.crewlet-sheet-grid--fit-content > .crewlet-sheet-grid__scroller {
|
|
20431
|
-
flex:
|
|
21821
|
+
flex: 0 1 auto;
|
|
21822
|
+
min-height: min(var(--crewlet-sheet-min-height, 0px), var(--crewlet-sheet-content-height, 0px));
|
|
20432
21823
|
max-height: var(--crewlet-sheet-max-height, 70vh);
|
|
20433
21824
|
}
|
|
20434
21825
|
|
|
@@ -20514,24 +21905,80 @@ svg.crewlet-select__chevron {
|
|
|
20514
21905
|
margin-inline-start: auto;
|
|
20515
21906
|
}
|
|
20516
21907
|
|
|
21908
|
+
/* A HEADER SITS ON ITS COLUMN'S EDGE: a number's and a rating's name end
|
|
21909
|
+
where their values end, the sort mark on the inner side, and a checkbox's
|
|
21910
|
+
name is centred over its boxes. A name on the leading edge over values on
|
|
21911
|
+
the trailing one read as belonging to the column before. */
|
|
21912
|
+
.crewlet-sheet-grid__header--number,
|
|
21913
|
+
.crewlet-sheet-grid__header--rating {
|
|
21914
|
+
flex-direction: row-reverse;
|
|
21915
|
+
}
|
|
21916
|
+
|
|
21917
|
+
.crewlet-sheet-grid__header--number > .crewlet-sheet-grid__header-presence,
|
|
21918
|
+
.crewlet-sheet-grid__header--rating > .crewlet-sheet-grid__header-presence {
|
|
21919
|
+
margin-inline: 0 auto;
|
|
21920
|
+
}
|
|
21921
|
+
|
|
21922
|
+
.crewlet-sheet-grid__header--checkbox {
|
|
21923
|
+
justify-content: center;
|
|
21924
|
+
}
|
|
21925
|
+
|
|
20517
21926
|
.crewlet-sheet-grid .crewlet-sheet-grid__header-badge {
|
|
20518
21927
|
box-shadow: 0 0 0 2px var(--crewlet-presence-hue);
|
|
20519
21928
|
}
|
|
20520
21929
|
|
|
21930
|
+
/* THE GUTTER: one centred stack, so the number and the row's actions button
|
|
21931
|
+
take exactly the same place and swapping one for the other moves nothing.
|
|
21932
|
+
Its width is the component's fixed track (SHEET_ROW_NUMBER_WIDTH), which
|
|
21933
|
+
holds five tabular digits, so row 9 and row 10000 stand in one column. */
|
|
20521
21934
|
.crewlet-sheet-grid__rownum {
|
|
21935
|
+
display: grid;
|
|
21936
|
+
grid-template-areas: 'gutter';
|
|
21937
|
+
place-items: center;
|
|
20522
21938
|
color: var(--color-text-tertiary);
|
|
20523
21939
|
font-size: var(--font-size-xs);
|
|
20524
21940
|
font-variant-numeric: tabular-nums;
|
|
20525
21941
|
}
|
|
20526
21942
|
|
|
20527
|
-
|
|
20528
|
-
|
|
21943
|
+
.crewlet-sheet-grid__rownum-number,
|
|
21944
|
+
.crewlet-sheet-grid__row-actions {
|
|
21945
|
+
grid-area: gutter;
|
|
21946
|
+
}
|
|
21947
|
+
|
|
21948
|
+
/* THE ACTIONS BUTTON IS ALWAYS THERE, drawn clear until it is wanted, so a
|
|
21949
|
+
tap on the number opens the row's menu on a screen with no pointer to
|
|
21950
|
+
hover with. It shows, and the number gives way to it, under the pointer,
|
|
21951
|
+
on the row holding focus (the active cell, or the button itself) and while
|
|
21952
|
+
its menu is open. A row the reader has not entered keeps its number. */
|
|
20529
21953
|
.crewlet-sheet-grid__row-actions {
|
|
20530
|
-
position: absolute;
|
|
20531
|
-
top: 50%;
|
|
20532
|
-
inset-inline-end: 0;
|
|
20533
21954
|
display: inline-flex;
|
|
20534
|
-
|
|
21955
|
+
opacity: 0;
|
|
21956
|
+
}
|
|
21957
|
+
|
|
21958
|
+
.crewlet-sheet-grid__row:is(:hover, :focus-within) > .crewlet-sheet-grid__rownum > .crewlet-sheet-grid__row-actions,
|
|
21959
|
+
.crewlet-sheet-grid__rownum--open > .crewlet-sheet-grid__row-actions {
|
|
21960
|
+
opacity: 1;
|
|
21961
|
+
}
|
|
21962
|
+
|
|
21963
|
+
.crewlet-sheet-grid__row:is(:hover, :focus-within) > .crewlet-sheet-grid__rownum--actions > .crewlet-sheet-grid__rownum-number,
|
|
21964
|
+
.crewlet-sheet-grid__rownum--open > .crewlet-sheet-grid__rownum-number {
|
|
21965
|
+
visibility: hidden;
|
|
21966
|
+
}
|
|
21967
|
+
|
|
21968
|
+
/* THE SELECTED ROWS' NUMBERS are marked as their cells are, and on the same
|
|
21969
|
+
condition (the reader is in the grid, or the selection spans more than one
|
|
21970
|
+
cell), the way a spreadsheet lights the row headers of a selection. The
|
|
21971
|
+
tint is laid over the gutter's own ground, which a sticky gutter needs: a
|
|
21972
|
+
translucent tint alone lets the values scrolling under it show through. */
|
|
21973
|
+
.crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__rownum--selected {
|
|
21974
|
+
background: linear-gradient(var(--color-brand-accent-soft), var(--color-brand-accent-soft)) var(--color-surface-background);
|
|
21975
|
+
color: var(--color-brand-accent-ink);
|
|
21976
|
+
}
|
|
21977
|
+
|
|
21978
|
+
/* The active cell's history is the reader's tool while they are in the grid,
|
|
21979
|
+
not a mark on a sheet nobody has entered. */
|
|
21980
|
+
.crewlet-sheet-grid__grid:not(:focus-within) .crewlet-sheet-grid__cell--history:not(:hover) > .crewlet-sheet-grid__history {
|
|
21981
|
+
visibility: hidden;
|
|
20535
21982
|
}
|
|
20536
21983
|
|
|
20537
21984
|
/* The bar at a row's leading edge while somebody has it selected. */
|
|
@@ -20569,8 +22016,21 @@ svg.crewlet-select__chevron {
|
|
|
20569
22016
|
justify-content: center;
|
|
20570
22017
|
}
|
|
20571
22018
|
|
|
20572
|
-
|
|
20573
|
-
|
|
22019
|
+
/* THE SELECTION IS TINTED WHILE THE READER IS IN THE GRID, or while it
|
|
22020
|
+
spans more than one cell. A grid nobody has entered still holds its first
|
|
22021
|
+
cell as the active one (the keys start there), and tinting it drew a stray
|
|
22022
|
+
highlight on every sheet as it opened. The tint is laid over the cell's
|
|
22023
|
+
own ground: alone, a translucent tint on a frozen cell let the values
|
|
22024
|
+
scrolling under it show through. */
|
|
22025
|
+
.crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__cell--selected {
|
|
22026
|
+
background: linear-gradient(var(--color-brand-accent-soft), var(--color-brand-accent-soft)) var(--color-surface-background);
|
|
22027
|
+
}
|
|
22028
|
+
|
|
22029
|
+
/* THE FROZEN EDGE once the grid is scrolled sideways: the columns that stay
|
|
22030
|
+
(or the row numbers, where none do) end on the strong hairline, so the
|
|
22031
|
+
values passing under them read as scrolled rather than cut. */
|
|
22032
|
+
.crewlet-sheet-grid__scroller--across .crewlet-sheet-grid__frozen-edge {
|
|
22033
|
+
border-inline-end-color: var(--color-border-strong);
|
|
20574
22034
|
}
|
|
20575
22035
|
|
|
20576
22036
|
.crewlet-sheet-grid__cell:focus-visible,
|
|
@@ -20640,6 +22100,31 @@ svg.crewlet-select__chevron {
|
|
|
20640
22100
|
white-space: normal;
|
|
20641
22101
|
}
|
|
20642
22102
|
|
|
22103
|
+
/* THE HISTORY CONTROL HAS ITS OWN ROOM while it shows, so a value ends, or
|
|
22104
|
+
ellipsises, before it rather than running under it. It sits at the edge
|
|
22105
|
+
the value does not start from: the trailing edge of a value drawn from the
|
|
22106
|
+
leading one, the leading edge of a number or a rating (drawn on the
|
|
22107
|
+
trailing one), so neither moves when its cell becomes active. A checkbox,
|
|
22108
|
+
centred in a column wider than it, needs no room made. */
|
|
22109
|
+
.crewlet-sheet-grid__grid:focus-within .crewlet-sheet-grid__cell--history,
|
|
22110
|
+
.crewlet-sheet-grid__cell--history:hover {
|
|
22111
|
+
padding-inline-end: calc(var(--spacing-1) * 2 + var(--crewlet-sheet-history-size));
|
|
22112
|
+
}
|
|
22113
|
+
|
|
22114
|
+
.crewlet-sheet-grid__grid:focus-within :is(.crewlet-sheet-grid__cell--number, .crewlet-sheet-grid__cell--rating).crewlet-sheet-grid__cell--history,
|
|
22115
|
+
:is(.crewlet-sheet-grid__cell--number, .crewlet-sheet-grid__cell--rating).crewlet-sheet-grid__cell--history:hover {
|
|
22116
|
+
padding-inline: calc(var(--spacing-1) * 2 + var(--crewlet-sheet-history-size)) var(--spacing-2);
|
|
22117
|
+
}
|
|
22118
|
+
|
|
22119
|
+
.crewlet-sheet-grid__grid:focus-within .crewlet-sheet-grid__cell--checkbox.crewlet-sheet-grid__cell--history,
|
|
22120
|
+
.crewlet-sheet-grid__cell--checkbox.crewlet-sheet-grid__cell--history:hover {
|
|
22121
|
+
padding-inline-end: var(--spacing-2);
|
|
22122
|
+
}
|
|
22123
|
+
|
|
22124
|
+
:is(.crewlet-sheet-grid__cell--number, .crewlet-sheet-grid__cell--rating) > .crewlet-sheet-grid__history {
|
|
22125
|
+
inset-inline: var(--spacing-1) auto;
|
|
22126
|
+
}
|
|
22127
|
+
|
|
20643
22128
|
.crewlet-sheet-grid__history {
|
|
20644
22129
|
position: absolute;
|
|
20645
22130
|
top: 50%;
|
|
@@ -20647,9 +22132,11 @@ svg.crewlet-select__chevron {
|
|
|
20647
22132
|
display: inline-flex;
|
|
20648
22133
|
align-items: center;
|
|
20649
22134
|
justify-content: center;
|
|
20650
|
-
|
|
22135
|
+
width: var(--crewlet-sheet-history-size);
|
|
22136
|
+
height: var(--crewlet-sheet-history-size);
|
|
22137
|
+
padding: 0;
|
|
20651
22138
|
border: 0;
|
|
20652
|
-
border-radius: var(--radius-
|
|
22139
|
+
border-radius: var(--radius-md);
|
|
20653
22140
|
background: var(--color-surface-elevated);
|
|
20654
22141
|
color: var(--color-text-secondary);
|
|
20655
22142
|
transform: translateY(-50%);
|
|
@@ -20657,6 +22144,7 @@ svg.crewlet-select__chevron {
|
|
|
20657
22144
|
}
|
|
20658
22145
|
|
|
20659
22146
|
.crewlet-sheet-grid__history:hover {
|
|
22147
|
+
background: var(--color-surface-hover);
|
|
20660
22148
|
color: var(--color-text-primary);
|
|
20661
22149
|
}
|
|
20662
22150
|
|
|
@@ -21031,11 +22519,19 @@ svg.crewlet-select__chevron {
|
|
|
21031
22519
|
}
|
|
21032
22520
|
|
|
21033
22521
|
@media (forced-colors: active) {
|
|
21034
|
-
.crewlet-sheet-grid__cell--selected {
|
|
22522
|
+
.crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__cell--selected {
|
|
21035
22523
|
background: Highlight;
|
|
21036
22524
|
color: HighlightText;
|
|
21037
22525
|
}
|
|
21038
22526
|
|
|
22527
|
+
/* A selected row's number takes the selection's ink on the page's ground:
|
|
22528
|
+
on a Highlight ground the browser's backplate behind the digits drew
|
|
22529
|
+
them as a solid block. */
|
|
22530
|
+
.crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__rownum--selected {
|
|
22531
|
+
background: Canvas;
|
|
22532
|
+
color: Highlight;
|
|
22533
|
+
}
|
|
22534
|
+
|
|
21039
22535
|
.crewlet-sheet-grid__rownum--present::before {
|
|
21040
22536
|
background: Highlight;
|
|
21041
22537
|
}
|
|
@@ -21878,7 +23374,7 @@ svg.crewlet-select__chevron {
|
|
|
21878
23374
|
}
|
|
21879
23375
|
|
|
21880
23376
|
|
|
21881
|
-
/* SlideCompare-
|
|
23377
|
+
/* SlideCompare-HTCMPQFY.css */
|
|
21882
23378
|
/*
|
|
21883
23379
|
* SlideCompare: two versions of a deck, slide by slide.
|
|
21884
23380
|
*
|
|
@@ -21937,9 +23433,34 @@ svg.crewlet-select__chevron {
|
|
|
21937
23433
|
gap: var(--spacing-3);
|
|
21938
23434
|
}
|
|
21939
23435
|
|
|
21940
|
-
.crewlet-slide-compare__side
|
|
21941
|
-
|
|
21942
|
-
|
|
23436
|
+
.crewlet-slide-compare__side {
|
|
23437
|
+
display: flex;
|
|
23438
|
+
flex-direction: column;
|
|
23439
|
+
gap: var(--spacing-1);
|
|
23440
|
+
min-width: 0;
|
|
23441
|
+
}
|
|
23442
|
+
|
|
23443
|
+
/* THE VERSIONS' NAMES over the two columns; over each side instead once the
|
|
23444
|
+
sides stack. */
|
|
23445
|
+
.crewlet-slide-compare__columns {
|
|
23446
|
+
display: grid;
|
|
23447
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
23448
|
+
gap: var(--spacing-3);
|
|
23449
|
+
padding-bottom: var(--spacing-2);
|
|
23450
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
23451
|
+
color: var(--color-text-secondary);
|
|
23452
|
+
font-size: var(--font-size-xs);
|
|
23453
|
+
font-weight: var(--font-weight-semibold);
|
|
23454
|
+
}
|
|
23455
|
+
|
|
23456
|
+
.crewlet-slide-compare__side-label {
|
|
23457
|
+
display: none;
|
|
23458
|
+
color: var(--color-text-tertiary);
|
|
23459
|
+
font-size: var(--font-size-xs);
|
|
23460
|
+
}
|
|
23461
|
+
|
|
23462
|
+
.crewlet-slide-compare__toggle {
|
|
23463
|
+
align-self: flex-start;
|
|
21943
23464
|
}
|
|
21944
23465
|
|
|
21945
23466
|
.crewlet-slide-compare__missing {
|
|
@@ -21958,17 +23479,36 @@ svg.crewlet-select__chevron {
|
|
|
21958
23479
|
.crewlet-slide-compare__sides {
|
|
21959
23480
|
grid-template-columns: minmax(0, 1fr);
|
|
21960
23481
|
}
|
|
23482
|
+
|
|
23483
|
+
.crewlet-slide-compare__columns {
|
|
23484
|
+
display: none;
|
|
23485
|
+
}
|
|
23486
|
+
|
|
23487
|
+
.crewlet-slide-compare__side-label {
|
|
23488
|
+
display: block;
|
|
23489
|
+
}
|
|
21961
23490
|
}
|
|
21962
23491
|
|
|
21963
23492
|
|
|
21964
|
-
/* SlideFilmstrip-
|
|
23493
|
+
/* SlideFilmstrip-5U6Z55GS.css */
|
|
21965
23494
|
/*
|
|
21966
|
-
* SlideFilmstrip: the column of slide thumbnails beside a deck's stage
|
|
23495
|
+
* SlideFilmstrip: the column of slide thumbnails beside a deck's stage, or
|
|
23496
|
+
* the row under it on a phone.
|
|
21967
23497
|
*
|
|
21968
23498
|
* The selected slide is ringed in the brand accent rather than filled, so its
|
|
21969
23499
|
* thumbnail still shows the slide's own colours.
|
|
23500
|
+
*
|
|
23501
|
+
* THE STRIP IS ITS OWN SCROLLER: a host bounds it (a column's max-height, a
|
|
23502
|
+
* row's width) and the strip scrolls inside that, keeping the selected slide
|
|
23503
|
+
* in view, with its scroll chained to nothing so a flick at its end does not
|
|
23504
|
+
* scroll the page under the reader's thumb.
|
|
21970
23505
|
*/
|
|
21971
23506
|
|
|
23507
|
+
.crewlet-slide-filmstrip {
|
|
23508
|
+
overflow: auto;
|
|
23509
|
+
overscroll-behavior: contain;
|
|
23510
|
+
}
|
|
23511
|
+
|
|
21972
23512
|
.crewlet-slide-filmstrip__list {
|
|
21973
23513
|
display: flex;
|
|
21974
23514
|
flex-direction: column;
|
|
@@ -22036,6 +23576,9 @@ svg.crewlet-select__chevron {
|
|
|
22036
23576
|
color: var(--color-text-secondary);
|
|
22037
23577
|
}
|
|
22038
23578
|
|
|
23579
|
+
/* A CONTROL'S CORNER: the handle is a 24px control like any toolbar button,
|
|
23580
|
+
so it takes --radius-md; the thumbnail beside it is a slide, and keeps the
|
|
23581
|
+
slide's own smaller corner. */
|
|
22039
23582
|
.crewlet-slide-filmstrip__handle {
|
|
22040
23583
|
display: inline-flex;
|
|
22041
23584
|
align-items: center;
|
|
@@ -22044,7 +23587,7 @@ svg.crewlet-select__chevron {
|
|
|
22044
23587
|
min-height: var(--size-target-min);
|
|
22045
23588
|
padding: 0;
|
|
22046
23589
|
border: 0;
|
|
22047
|
-
border-radius: var(--radius-
|
|
23590
|
+
border-radius: var(--radius-md);
|
|
22048
23591
|
background: transparent;
|
|
22049
23592
|
color: var(--color-text-tertiary);
|
|
22050
23593
|
cursor: grab;
|
|
@@ -22071,8 +23614,55 @@ svg.crewlet-select__chevron {
|
|
|
22071
23614
|
box-shadow: 0 var(--spacing-1) 0 var(--color-brand-accent);
|
|
22072
23615
|
}
|
|
22073
23616
|
|
|
23617
|
+
/* A ROW UNDER THE STAGE: fixed-width thumbnails that scroll sideways, each
|
|
23618
|
+
with its number and its handle under it rather than beside it. */
|
|
23619
|
+
/* NO SCROLL SNAP: a snap point would pull the strip back to the start of an
|
|
23620
|
+
earlier thumbnail just after it scrolled the selected one into view. */
|
|
23621
|
+
.crewlet-slide-filmstrip--horizontal {
|
|
23622
|
+
overflow-y: hidden;
|
|
23623
|
+
}
|
|
23624
|
+
|
|
23625
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__list {
|
|
23626
|
+
flex-direction: row;
|
|
23627
|
+
gap: var(--spacing-3);
|
|
23628
|
+
width: max-content;
|
|
23629
|
+
}
|
|
23630
|
+
|
|
23631
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__item {
|
|
23632
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
23633
|
+
grid-template-areas:
|
|
23634
|
+
'thumb thumb'
|
|
23635
|
+
'number handle';
|
|
23636
|
+
align-items: center;
|
|
23637
|
+
width: 7.5rem;
|
|
23638
|
+
}
|
|
23639
|
+
|
|
23640
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__thumb {
|
|
23641
|
+
grid-area: thumb;
|
|
23642
|
+
}
|
|
23643
|
+
|
|
23644
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__number {
|
|
23645
|
+
grid-area: number;
|
|
23646
|
+
padding-top: 0;
|
|
23647
|
+
text-align: left;
|
|
23648
|
+
}
|
|
23649
|
+
|
|
23650
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__handle {
|
|
23651
|
+
grid-area: handle;
|
|
23652
|
+
min-height: var(--size-control-sm);
|
|
23653
|
+
cursor: grab;
|
|
23654
|
+
}
|
|
23655
|
+
|
|
23656
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__item[data-reorder-target='before'] .crewlet-slide-filmstrip__thumb {
|
|
23657
|
+
box-shadow: calc(var(--spacing-1) * -1) 0 0 var(--color-brand-accent);
|
|
23658
|
+
}
|
|
22074
23659
|
|
|
22075
|
-
|
|
23660
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__item[data-reorder-target='after'] .crewlet-slide-filmstrip__thumb {
|
|
23661
|
+
box-shadow: var(--spacing-1) 0 0 var(--color-brand-accent);
|
|
23662
|
+
}
|
|
23663
|
+
|
|
23664
|
+
|
|
23665
|
+
/* SlideGrid-S4LTJ4UU.css */
|
|
22076
23666
|
/*
|
|
22077
23667
|
* SlideGrid: every slide of a deck at once, by its outline's sections.
|
|
22078
23668
|
*/
|
|
@@ -22113,11 +23703,6 @@ svg.crewlet-select__chevron {
|
|
|
22113
23703
|
cursor: pointer;
|
|
22114
23704
|
}
|
|
22115
23705
|
|
|
22116
|
-
.crewlet-slide-grid__card .crewlet-slide-stage {
|
|
22117
|
-
border-radius: var(--radius-sm);
|
|
22118
|
-
outline: 1px solid var(--color-border-default);
|
|
22119
|
-
}
|
|
22120
|
-
|
|
22121
23706
|
.crewlet-slide-grid__card:hover .crewlet-slide-stage {
|
|
22122
23707
|
outline-color: var(--color-border-hover);
|
|
22123
23708
|
}
|
|
@@ -22156,8 +23741,73 @@ svg.crewlet-select__chevron {
|
|
|
22156
23741
|
white-space: nowrap;
|
|
22157
23742
|
}
|
|
22158
23743
|
|
|
23744
|
+
/* TWO TO A ROW ON A PHONE: a grid of one is the filmstrip at full size, and
|
|
23745
|
+
the grid is for seeing the deck's run at a glance. */
|
|
23746
|
+
@media (width < 640px) {
|
|
23747
|
+
.crewlet-slide-grid__list {
|
|
23748
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
23749
|
+
gap: var(--spacing-3);
|
|
23750
|
+
}
|
|
23751
|
+
}
|
|
23752
|
+
|
|
23753
|
+
|
|
23754
|
+
/* SlideNav-BLFJF6AH.css */
|
|
23755
|
+
/*
|
|
23756
|
+
* SlideNav: Previous, the position and Next, and whatever follows them.
|
|
23757
|
+
*/
|
|
23758
|
+
|
|
23759
|
+
.crewlet-slide-nav {
|
|
23760
|
+
display: inline-flex;
|
|
23761
|
+
align-items: center;
|
|
23762
|
+
gap: var(--spacing-1);
|
|
23763
|
+
}
|
|
23764
|
+
|
|
23765
|
+
.crewlet-slide-nav__position {
|
|
23766
|
+
min-width: 5em;
|
|
23767
|
+
color: var(--color-text-secondary);
|
|
23768
|
+
font-size: var(--font-size-sm);
|
|
23769
|
+
font-variant-numeric: tabular-nums;
|
|
23770
|
+
text-align: center;
|
|
23771
|
+
white-space: nowrap;
|
|
23772
|
+
}
|
|
23773
|
+
|
|
23774
|
+
.crewlet-slide-nav__more {
|
|
23775
|
+
display: inline-flex;
|
|
23776
|
+
align-items: center;
|
|
23777
|
+
gap: var(--spacing-1);
|
|
23778
|
+
margin-left: var(--spacing-2);
|
|
23779
|
+
padding-left: var(--spacing-3);
|
|
23780
|
+
border-left: 1px solid var(--color-border-default);
|
|
23781
|
+
}
|
|
23782
|
+
|
|
23783
|
+
/* OVER A PROJECTED SLIDE: a pill in the projection's own fixed colours, so it
|
|
23784
|
+
reads over black bars and over a slide of any colour, in every theme. */
|
|
23785
|
+
.crewlet-slide-nav--projection {
|
|
23786
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
23787
|
+
border-radius: var(--radius-pill);
|
|
23788
|
+
background: var(--color-projection-ground);
|
|
23789
|
+
color: var(--color-projection-ink);
|
|
23790
|
+
}
|
|
23791
|
+
|
|
23792
|
+
.crewlet-slide-nav--projection .crewlet-slide-nav__position {
|
|
23793
|
+
color: inherit;
|
|
23794
|
+
}
|
|
23795
|
+
|
|
23796
|
+
.crewlet-slide-nav--projection .crewlet-slide-nav__more {
|
|
23797
|
+
border-left-color: var(--color-projection-rule);
|
|
23798
|
+
}
|
|
23799
|
+
|
|
23800
|
+
.crewlet-slide-nav--projection .crewlet-icon-btn--ghost {
|
|
23801
|
+
color: inherit;
|
|
23802
|
+
}
|
|
23803
|
+
|
|
23804
|
+
.crewlet-slide-nav--projection .crewlet-icon-btn--ghost:hover:not(:disabled):not([aria-disabled='true']) {
|
|
23805
|
+
background: var(--color-projection-hover);
|
|
23806
|
+
color: inherit;
|
|
23807
|
+
}
|
|
22159
23808
|
|
|
22160
|
-
|
|
23809
|
+
|
|
23810
|
+
/* SlideStage-S2FISF4C.css */
|
|
22161
23811
|
/*
|
|
22162
23812
|
* SlideStage: a slide laid out at its authored size and scaled to its box.
|
|
22163
23813
|
*
|
|
@@ -22176,6 +23826,29 @@ svg.crewlet-select__chevron {
|
|
|
22176
23826
|
height: 100%;
|
|
22177
23827
|
}
|
|
22178
23828
|
|
|
23829
|
+
/* THE SLIDE'S OWN EDGE: the box is the slide (or, for a show in the page,
|
|
23830
|
+
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
|
|
23831
|
+
marks a stage (selected, current) recolours this outline rather than adding
|
|
23832
|
+
a second line. */
|
|
23833
|
+
.crewlet-slide-stage--framed {
|
|
23834
|
+
border-radius: var(--radius-sm);
|
|
23835
|
+
outline: 1px solid var(--color-border-default);
|
|
23836
|
+
}
|
|
23837
|
+
|
|
23838
|
+
:fullscreen .crewlet-slide-stage--framed,
|
|
23839
|
+
.crewlet-slide-stage--framed:fullscreen {
|
|
23840
|
+
border-radius: 0;
|
|
23841
|
+
outline: 0;
|
|
23842
|
+
}
|
|
23843
|
+
|
|
23844
|
+
/* FULL SCREEN IS A PROJECTOR: the bars round a slide whose shape is not the
|
|
23845
|
+
screen's are black, whatever the theme, so the room sees the slide alone. */
|
|
23846
|
+
:fullscreen .crewlet-slide-stage--contain,
|
|
23847
|
+
:fullscreen .crewlet-slide-stage--view,
|
|
23848
|
+
.crewlet-slide-stage:fullscreen {
|
|
23849
|
+
background: var(--color-projection-letterbox);
|
|
23850
|
+
}
|
|
23851
|
+
|
|
22179
23852
|
/* Until it is measured, and wherever it is not (no layout), a view stage is
|
|
22180
23853
|
its slide's shape at its width. In full screen it fills the box, sharing a
|
|
22181
23854
|
flex column with the show's controls. */
|
|
@@ -22208,7 +23881,7 @@ svg.crewlet-select__chevron {
|
|
|
22208
23881
|
}
|
|
22209
23882
|
|
|
22210
23883
|
|
|
22211
|
-
/* StatCard-
|
|
23884
|
+
/* StatCard-4T7TMWMN.css */
|
|
22212
23885
|
/*
|
|
22213
23886
|
* The stat tile.
|
|
22214
23887
|
*
|
|
@@ -22283,12 +23956,18 @@ svg.crewlet-select__chevron {
|
|
|
22283
23956
|
* The value's line: the number at its start, the figure at its end, both on
|
|
22284
23957
|
* the line's FOOT, so a 28px number and a 28px sparkline share a baseline
|
|
22285
23958
|
* rather than centring on each other.
|
|
23959
|
+
*
|
|
23960
|
+
* THE FIGURE GIVES WAY BEFORE THE NUMBER. Where a tile is too narrow for
|
|
23961
|
+
* both (a row of tiles on a phone, two to a line), the figure moves under the
|
|
23962
|
+
* number rather than the number being cut to its first digit: "2…" beside a
|
|
23963
|
+
* meter said nothing, and the meter alone says less than the number.
|
|
22286
23964
|
*/
|
|
22287
23965
|
.crewlet-statcard__reading {
|
|
22288
23966
|
display: flex;
|
|
23967
|
+
flex-wrap: wrap;
|
|
22289
23968
|
align-items: flex-end;
|
|
22290
23969
|
justify-content: space-between;
|
|
22291
|
-
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
23970
|
+
gap: var(--spacing-2) calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
22292
23971
|
min-width: 0;
|
|
22293
23972
|
}
|
|
22294
23973
|
|
|
@@ -22297,40 +23976,51 @@ svg.crewlet-select__chevron {
|
|
|
22297
23976
|
* track, with tabular figures so a number that ticks up moves nothing beside
|
|
22298
23977
|
* it.
|
|
22299
23978
|
*
|
|
22300
|
-
* ITS LINE IS THE GLYPH'S OWN HEIGHT (a leading of 1). The
|
|
23979
|
+
* ITS LINE IS THE GLYPH'S OWN HEIGHT (a leading of 1). The number is one line
|
|
22301
23980
|
* that never wraps, and any leading over it is air under the digits that
|
|
22302
23981
|
* opens between the number and the line below it and stands the number
|
|
22303
23982
|
* higher than the figure it shares a foot with.
|
|
22304
23983
|
*
|
|
22305
|
-
*
|
|
22306
|
-
*
|
|
22307
|
-
*
|
|
22308
|
-
*
|
|
22309
|
-
* say a digit was lost. The
|
|
22310
|
-
* the number's
|
|
23984
|
+
* THE NUMBER ENDS, THE UNIT MOVES. The number and its unit are a wrapping
|
|
23985
|
+
* row on one baseline: where the tile is too narrow for both, the unit moves
|
|
23986
|
+
* under the number whole ("of 10 GB"), rather than being cut to "of 1…"; and
|
|
23987
|
+
* the number, alone on its line and still too long, ends in an ellipsis
|
|
23988
|
+
* rather than stopping mid-digit with nothing to say a digit was lost. The
|
|
23989
|
+
* ellipsis is the number's own box's, since `text-overflow` acts on a block
|
|
23990
|
+
* container only.
|
|
22311
23991
|
*/
|
|
22312
23992
|
.crewlet-statcard__value {
|
|
22313
|
-
display:
|
|
22314
|
-
flex:
|
|
23993
|
+
display: flex;
|
|
23994
|
+
flex-wrap: wrap;
|
|
23995
|
+
align-items: baseline;
|
|
23996
|
+
gap: var(--spacing-1);
|
|
23997
|
+
/* Never narrower than the number, so the figure wraps first; never wider
|
|
23998
|
+
than the tile, so a number too long for the tile alone still ends. */
|
|
23999
|
+
flex: 1 0 auto;
|
|
22315
24000
|
min-width: 0;
|
|
24001
|
+
max-width: 100%;
|
|
22316
24002
|
font-size: var(--font-size-display);
|
|
22317
24003
|
font-weight: var(--font-weight-semibold);
|
|
22318
24004
|
letter-spacing: var(--font-letter-spacing-tight);
|
|
22319
24005
|
line-height: 1;
|
|
22320
24006
|
font-variant-numeric: tabular-nums;
|
|
24007
|
+
}
|
|
24008
|
+
|
|
24009
|
+
.crewlet-statcard__number {
|
|
24010
|
+
min-width: 0;
|
|
22321
24011
|
overflow: hidden;
|
|
22322
24012
|
text-overflow: ellipsis;
|
|
22323
24013
|
white-space: nowrap;
|
|
22324
24014
|
}
|
|
22325
24015
|
|
|
22326
|
-
/* The unit,
|
|
22327
|
-
reads as part of the figure rather than as a second one. */
|
|
24016
|
+
/* The unit, on the number's baseline at a quieter weight, kept whole. */
|
|
22328
24017
|
.crewlet-statcard__unit {
|
|
22329
|
-
|
|
24018
|
+
flex: none;
|
|
22330
24019
|
font-size: var(--font-size-sm);
|
|
22331
24020
|
font-weight: var(--font-weight-medium);
|
|
22332
24021
|
letter-spacing: var(--font-letter-spacing-normal);
|
|
22333
24022
|
color: var(--color-text-tertiary);
|
|
24023
|
+
white-space: nowrap;
|
|
22334
24024
|
}
|
|
22335
24025
|
|
|
22336
24026
|
/*
|
|
@@ -22348,6 +24038,16 @@ svg.crewlet-select__chevron {
|
|
|
22348
24038
|
min-width: 0;
|
|
22349
24039
|
}
|
|
22350
24040
|
|
|
24041
|
+
/* BELOW: the figure under the number, as wide as the tile. */
|
|
24042
|
+
.crewlet-statcard__reading--below {
|
|
24043
|
+
flex-direction: column;
|
|
24044
|
+
align-items: stretch;
|
|
24045
|
+
}
|
|
24046
|
+
|
|
24047
|
+
.crewlet-statcard__reading--below > .crewlet-statcard__trend {
|
|
24048
|
+
width: auto;
|
|
24049
|
+
}
|
|
24050
|
+
|
|
22351
24051
|
.crewlet-statcard__trend > :where(button, a) {
|
|
22352
24052
|
align-self: flex-end;
|
|
22353
24053
|
}
|
|
@@ -23681,7 +25381,7 @@ b.crewlet-switcher__match {
|
|
|
23681
25381
|
}
|
|
23682
25382
|
|
|
23683
25383
|
|
|
23684
|
-
/* Tabs-
|
|
25384
|
+
/* Tabs-MMZXV5EF.css */
|
|
23685
25385
|
/*
|
|
23686
25386
|
* The pill register: Tabs and SegmentedControl.
|
|
23687
25387
|
*
|
|
@@ -23779,13 +25479,14 @@ b.crewlet-switcher__match {
|
|
|
23779
25479
|
* chips floated; the raised rung is held a visible step above the card by the
|
|
23780
25480
|
* palette suite, and the hairline finds it on any other ground.
|
|
23781
25481
|
*
|
|
23782
|
-
* The inset is
|
|
23783
|
-
*
|
|
23784
|
-
*
|
|
23785
|
-
*
|
|
25482
|
+
* The inset is 1px, a hairline of the well's own ground round each chip:
|
|
25483
|
+
* with the 1px boundary it is two pixels a side, and a 24px chip makes a 28px
|
|
25484
|
+
* row, the tab step. Tabs sit between the 26px controls of a toolbar or a
|
|
25485
|
+
* panel and the 32px actions of a page, so a row of them reads as the place's
|
|
25486
|
+
* navigation rather than as one more button beside them.
|
|
23786
25487
|
*/
|
|
23787
25488
|
.crewlet-tabs--pill {
|
|
23788
|
-
--crewlet-tabs-pill-inset:
|
|
25489
|
+
--crewlet-tabs-pill-inset: 1px;
|
|
23789
25490
|
|
|
23790
25491
|
gap: var(--crewlet-tabs-pill-inset);
|
|
23791
25492
|
padding: var(--crewlet-tabs-pill-inset);
|
|
@@ -23889,8 +25590,8 @@ b.crewlet-switcher__match {
|
|
|
23889
25590
|
* can hit. max() against --size-target-min holds every density at 24px or
|
|
23890
25591
|
* more, and at density 1 the two agree.
|
|
23891
25592
|
*
|
|
23892
|
-
* The corner is the
|
|
23893
|
-
* boundary and
|
|
25593
|
+
* The corner is the chip radius (--radius-chip): the well's 8px less its 1px
|
|
25594
|
+
* boundary and 1px inset is 6px, and a chip a pixel rounder than that
|
|
23894
25595
|
* concentric curve is what reads as a chip sitting IN the well rather than a
|
|
23895
25596
|
* second well inside it. The side pad is the design's 10px, two steps and a
|
|
23896
25597
|
* half.
|
|
@@ -23908,7 +25609,7 @@ b.crewlet-switcher__match {
|
|
|
23908
25609
|
.crewlet-tabs--pill .crewlet-tabs__tab {
|
|
23909
25610
|
min-height: max(var(--size-target-min), calc(var(--size-control-md) - 6px));
|
|
23910
25611
|
padding: 0 calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
23911
|
-
border-radius: var(--radius-
|
|
25612
|
+
border-radius: var(--radius-chip);
|
|
23912
25613
|
color: var(--color-text-secondary);
|
|
23913
25614
|
font-size: var(--font-size-xs);
|
|
23914
25615
|
}
|
|
@@ -25952,7 +27653,7 @@ svg.crewlet-time-window__tick {
|
|
|
25952
27653
|
}
|
|
25953
27654
|
|
|
25954
27655
|
|
|
25955
|
-
/* Toaster-
|
|
27656
|
+
/* Toaster-C6BQ7L6I.css */
|
|
25956
27657
|
/*
|
|
25957
27658
|
* The toast stack, drawn as the first release drew it (24a60c3): a dark strip
|
|
25958
27659
|
* on the page's deepest ground with the large shadow and the rim light, a
|
|
@@ -26189,13 +27890,22 @@ svg.crewlet-time-window__tick {
|
|
|
26189
27890
|
* THE COUNTDOWN IS A WASH BEHIND THE WORDS, the variant's soft step over the
|
|
26190
27891
|
* whole strip, draining from the right as the time runs out. It sits under
|
|
26191
27892
|
* every raised child, and it is the timer's picture, not the timer.
|
|
27893
|
+
*
|
|
27894
|
+
* ITS LEADING EDGE FADES OUT rather than stopping. Cut square, the wash read
|
|
27895
|
+
* as a strip painted in two tones whenever it stood still: in a still frame,
|
|
27896
|
+
* and under the pointer, which pauses it, which is when a reader is looking.
|
|
27897
|
+
* Feathered, a stopped wash still reads as a tint running out.
|
|
26192
27898
|
*/
|
|
26193
27899
|
.crewlet-toast__progress {
|
|
26194
27900
|
position: absolute;
|
|
26195
27901
|
inset: 0;
|
|
26196
27902
|
z-index: var(--z-index-base);
|
|
26197
27903
|
transform-origin: left center;
|
|
26198
|
-
background:
|
|
27904
|
+
background: linear-gradient(
|
|
27905
|
+
to right,
|
|
27906
|
+
var(--crewlet-toast-wash) calc(100% - var(--spacing-7)),
|
|
27907
|
+
transparent
|
|
27908
|
+
);
|
|
26199
27909
|
pointer-events: none;
|
|
26200
27910
|
animation-name: crewlet-toast-drain;
|
|
26201
27911
|
animation-timing-function: linear;
|
|
@@ -27987,7 +29697,7 @@ svg.crewlet-time-window__tick {
|
|
|
27987
29697
|
}
|
|
27988
29698
|
|
|
27989
29699
|
|
|
27990
|
-
/* WidgetFrame-
|
|
29700
|
+
/* WidgetFrame-BTFW3CRK.css */
|
|
27991
29701
|
/*
|
|
27992
29702
|
* WidgetFrame: one figure on a dashboard. A title row, the figure filling the
|
|
27993
29703
|
* height the host's frame gives it, and the citation line at the foot.
|
|
@@ -28050,6 +29760,11 @@ svg.crewlet-time-window__tick {
|
|
|
28050
29760
|
line-clamp: 2;
|
|
28051
29761
|
}
|
|
28052
29762
|
|
|
29763
|
+
/* A held title keeps its two lines empty or not (see `holdTitle`). */
|
|
29764
|
+
.crewlet-widget-frame--hold-title .crewlet-widget-frame__title {
|
|
29765
|
+
min-height: calc(2 * 1em * var(--font-line-height-snug));
|
|
29766
|
+
}
|
|
29767
|
+
|
|
28053
29768
|
/* The controls stand on the title's first line: the box is one line of the
|
|
28054
29769
|
title tall and the control is centred in it, whatever its own height. */
|
|
28055
29770
|
.crewlet-widget-frame__actions {
|
|
@@ -28067,15 +29782,27 @@ svg.crewlet-time-window__tick {
|
|
|
28067
29782
|
overflow: auto;
|
|
28068
29783
|
}
|
|
28069
29784
|
|
|
28070
|
-
/*
|
|
28071
|
-
|
|
28072
|
-
|
|
29785
|
+
/*
|
|
29786
|
+
* A flush figure reaches the frame's sides, and a table's OUTER cells take the
|
|
29787
|
+
* frame's inset, so its first column starts under the title, its last ends
|
|
29788
|
+
* where the title row's controls do, and its row rules meet the border.
|
|
29789
|
+
*
|
|
29790
|
+
* ONLY THE OUTER ONES. Every cell took the frame's 16px a side, so two columns
|
|
29791
|
+
* stood 32px apart and a table of eight columns ran past a widget the full
|
|
29792
|
+
* width of a board; between columns a cell keeps the compact table's own
|
|
29793
|
+
* inset. The last column is the last before the table's trailing spacer,
|
|
29794
|
+
* which is not a column of the data.
|
|
29795
|
+
*/
|
|
28073
29796
|
.crewlet-widget-frame--flush .crewlet-widget-frame__body {
|
|
28074
29797
|
padding-inline: 0;
|
|
28075
29798
|
}
|
|
28076
29799
|
|
|
28077
|
-
.crewlet-widget-frame--flush .crewlet-data-table--compact {
|
|
28078
|
-
|
|
29800
|
+
.crewlet-widget-frame--flush .crewlet-data-table--compact :is(th, td):first-child {
|
|
29801
|
+
padding-inline-start: var(--spacing-4);
|
|
29802
|
+
}
|
|
29803
|
+
|
|
29804
|
+
.crewlet-widget-frame--flush .crewlet-data-table--compact :is(th, td):nth-last-child(1 of :not(.crewlet-data-table__th--spacer, .crewlet-data-table__td--spacer)) {
|
|
29805
|
+
padding-inline-end: var(--spacing-4);
|
|
28079
29806
|
}
|
|
28080
29807
|
|
|
28081
29808
|
/* A stat tile drawn flush as the figure stands on the frame's inset; its own
|
|
@@ -28085,6 +29812,23 @@ svg.crewlet-time-window__tick {
|
|
|
28085
29812
|
padding: 0;
|
|
28086
29813
|
}
|
|
28087
29814
|
|
|
29815
|
+
/* A FRAME TOO NARROW FOR THE DISPLAY NUMBER sets it a step down rather than
|
|
29816
|
+
cutting it: two columns of a board are about 120px, and a number at the
|
|
29817
|
+
display step lost its last digits there ("123.…"). */
|
|
29818
|
+
@container crewlet-widget-frame (width < 11rem) {
|
|
29819
|
+
.crewlet-widget-frame__body .crewlet-statcard__value {
|
|
29820
|
+
font-size: var(--font-size-xl);
|
|
29821
|
+
}
|
|
29822
|
+
}
|
|
29823
|
+
|
|
29824
|
+
/* NOR DOES IT RESERVE A SECOND LINE IT HAS NOTHING FOR. The reserve keeps a
|
|
29825
|
+
StatGroup's tiles at one height; a frame takes its height from the board,
|
|
29826
|
+
and the empty line stood as a band of air between the number and the
|
|
29827
|
+
citation that no other figure has. */
|
|
29828
|
+
.crewlet-widget-frame__body .crewlet-statcard__sub:empty {
|
|
29829
|
+
display: none;
|
|
29830
|
+
}
|
|
29831
|
+
|
|
28088
29832
|
.crewlet-widget-frame__blocked {
|
|
28089
29833
|
display: flex;
|
|
28090
29834
|
align-items: flex-start;
|
|
@@ -28180,8 +29924,18 @@ svg.crewlet-time-window__tick {
|
|
|
28180
29924
|
align-items: flex-start;
|
|
28181
29925
|
}
|
|
28182
29926
|
|
|
29927
|
+
/* STACKED, THE TITLE TAKES A SECOND LINE BEFORE IT ENDS: a frame three
|
|
29928
|
+
columns wide cut "Deploys for the chosen service" to "Deploys for the
|
|
29929
|
+
chosen se…". Past two lines it ends in an ellipsis, and the whole title
|
|
29930
|
+
is the citation's tooltip. */
|
|
28183
29931
|
.crewlet-widget-frame__source {
|
|
29932
|
+
display: -webkit-box;
|
|
28184
29933
|
max-width: 100%;
|
|
29934
|
+
white-space: normal;
|
|
29935
|
+
overflow-wrap: anywhere;
|
|
29936
|
+
-webkit-box-orient: vertical;
|
|
29937
|
+
-webkit-line-clamp: 2;
|
|
29938
|
+
line-clamp: 2;
|
|
28185
29939
|
}
|
|
28186
29940
|
|
|
28187
29941
|
.crewlet-widget-frame__when::before {
|