@crewlethq/ui 0.31.1 → 0.33.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 +151 -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 +12 -12
- package/dist/{ArtifactBar-MLMJHWY6.css → ArtifactBar-C462VD4C.css} +8 -3
- package/dist/ArtifactCard/ArtifactCard.d.ts +19 -1
- package/dist/ArtifactCard/index.d.ts +1 -1
- package/dist/ArtifactCard/index.js +4 -4
- package/dist/{ArtifactCard-EXVAEBV6.css → ArtifactCard-AS5Z4CVI.css} +17 -2
- package/dist/ArtifactCover/index.js +6 -6
- package/dist/ArtifactIcon/index.js +5 -5
- 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 +81 -4
- package/dist/Canvas/ShortcutTip.d.ts +22 -0
- package/dist/Canvas/geometry.d.ts +13 -3
- package/dist/Canvas/index.d.ts +4 -2
- package/dist/Canvas/index.js +5 -3
- package/dist/{Canvas-YVXHMWLN.css → Canvas-VUG2HLZK.css} +62 -3
- package/dist/CanvasBoard/CanvasBoard.d.ts +110 -12
- package/dist/CanvasBoard/budget.d.ts +9 -3
- package/dist/CanvasBoard/index.d.ts +2 -2
- package/dist/CanvasBoard/index.js +9 -5
- package/dist/CanvasBoard-5NNSKY6A.css +462 -0
- package/dist/CanvasToolbar/CanvasToolbar.d.ts +48 -0
- package/dist/CanvasToolbar/index.d.ts +3 -0
- package/dist/CanvasToolbar/index.js +12 -0
- package/dist/CanvasToolbar-EM5EVZED.css +34 -0
- 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 +9 -9
- 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-YZ7KG2RD.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/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/index.js +2 -2
- 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 +3 -1
- package/dist/SheetGrid/index.js +10 -10
- package/dist/{SheetGrid-J3TKKXZL.css → SheetGrid-AKPUCK67.css} +106 -7
- 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/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 +14 -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/index.js +2 -2
- package/dist/TreeCanvas/index.js +6 -4
- 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-OJ45PPCV.js → chunk-22UEIXZE.js} +127 -32
- package/dist/{chunk-UZ6MA2V6.js → chunk-2DHMVB5J.js} +2 -2
- package/dist/{chunk-WJDQ7XQA.js → chunk-2QEDJSJC.js} +1 -1
- package/dist/{chunk-2HIOJ4YZ.js → chunk-3EB2AV3H.js} +2 -3
- package/dist/{chunk-ODT5H4MN.js → chunk-3LYWD3BO.js} +2 -2
- package/dist/{chunk-FAQGGX2Z.js → chunk-3TFDQLW3.js} +1 -1
- package/dist/{chunk-VYDFB6PJ.js → chunk-3U7S6ZUN.js} +50 -17
- package/dist/{chunk-A4E5YLXO.js → chunk-4B6LSFDS.js} +1 -1
- package/dist/{chunk-S6VG5ZFZ.js → chunk-4IJS5CPF.js} +1 -1
- package/dist/{chunk-UAN5NE7M.js → chunk-5AQBPHZD.js} +1 -1
- package/dist/{chunk-QWOPX2MN.js → chunk-5FYPE5GL.js} +2 -3
- package/dist/{chunk-CJKMURZO.js → chunk-5SZGKSGL.js} +1 -1
- package/dist/chunk-6VOS2GMB.js +54 -0
- package/dist/{chunk-RODMM35O.js → chunk-7Q7WDXHG.js} +5 -5
- package/dist/{chunk-JI5AVQLA.js → chunk-7WHDPLVJ.js} +1 -1
- package/dist/{chunk-QH3AKP2N.js → chunk-AC22RZKC.js} +2 -2
- package/dist/{chunk-ZITJKF6Z.js → chunk-AYB6AYNH.js} +1 -1
- 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-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-GOSQXEZU.js → chunk-DFZMYB5X.js} +16 -10
- package/dist/{chunk-TGYDROIB.js → chunk-EBCHVFCS.js} +4 -4
- package/dist/{chunk-YDBC4DNW.js → chunk-FWYHRU7M.js} +1 -1
- package/dist/{chunk-CT4EZF62.js → chunk-G4ZW7A2W.js} +125 -33
- package/dist/chunk-GLSOD5Z4.js +33 -0
- 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-4JUKWWUD.js → chunk-HH2GKAAE.js} +1 -1
- package/dist/{chunk-QVE4GJAT.js → chunk-HJO4WCH6.js} +1 -1
- package/dist/{chunk-I3BSQUKN.js → chunk-HUVG2FFT.js} +1 -1
- package/dist/{chunk-3C3BRIMY.js → chunk-ILAEBSLJ.js} +3 -3
- package/dist/{chunk-GR55WT4R.js → chunk-IYO2N5ZH.js} +2 -2
- package/dist/{chunk-RWA4H2TV.js → chunk-J6ON5SYE.js} +1 -1
- package/dist/{chunk-NHBP2XS5.js → chunk-J6ZSH3F5.js} +49 -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-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-O63MWA4G.js → chunk-LV4APO72.js} +10 -3
- package/dist/{chunk-B4EBHPK3.js → chunk-M5KZX5JE.js} +9 -2
- package/dist/{chunk-JODJS7MR.js → chunk-MDNVHIB2.js} +276 -47
- package/dist/{chunk-VOX3YRFO.js → chunk-MTMKIUWF.js} +4 -4
- package/dist/{chunk-HVNTQ36V.js → chunk-O37AQNLK.js} +4 -4
- 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-JQLTG4KH.js → chunk-ORT5IKHP.js} +62 -51
- package/dist/{chunk-4KWOKX2B.js → chunk-OSKJZNBT.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-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-VVRL27HM.js → chunk-ULPL26BU.js} +2 -2
- package/dist/{chunk-6AH2XJ3Q.js → chunk-UNXLTJU7.js} +3 -3
- package/dist/{chunk-FC4YTTFJ.js → chunk-UQGFHNDI.js} +2 -3
- 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-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-I3KKZ2O3.js → chunk-XEGZHHRH.js} +45 -36
- package/dist/{chunk-IKB6HFGK.js → chunk-XO7PUL4F.js} +6 -4
- 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/{chunk-P4BOXB6E.js → chunk-Z6GFMI2Z.js} +6 -7
- package/dist/{chunk-YEKYVJQR.js → chunk-ZNBLFCQS.js} +2 -2
- package/dist/generated/index.d.ts +4 -0
- package/dist/generated/index.js +107 -104
- package/dist/index.js +107 -104
- package/dist/styles.css +1648 -235
- package/package.json +3 -3
- package/dist/AccessDeniedCard-WXM5DBDZ.css +0 -8
- package/dist/CanvasBoard-ZLPDINSM.css +0 -236
- package/dist/DocTabsEditor-RCOWHX5J.css +0 -78
- package/dist/PresenterView-T2C6ZZ3N.css +0 -103
- package/dist/SandboxedFrame-L6HBQZCD.css +0 -50
- package/dist/chunk-ALMSY7RL.js +0 -74
- package/dist/chunk-LR5QTFOE.js +0 -105
- package/dist/chunk-OGAAHVF6.js +0 -107
- package/dist/chunk-UZ7ZUSLH.js +0 -179
- package/dist/utils/useMediaMatch.d.ts +0 -12
- /package/dist/{chunk-OC46246T.js → chunk-2JJIN6JN.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,21 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2364
2414
|
}
|
|
2365
2415
|
|
|
2366
2416
|
|
|
2367
|
-
/* ArtifactCard-
|
|
2417
|
+
/* ArtifactCard-AS5Z4CVI.css */
|
|
2368
2418
|
/*
|
|
2369
2419
|
* A card in a gallery: the preview on top at a fixed ratio, so a grid of them
|
|
2370
2420
|
* lines up whatever each preview is, then the title and up to three lines of
|
|
2371
2421
|
* facts. `compact` is a row with the kind's glyph in place of the preview.
|
|
2372
2422
|
*/
|
|
2373
2423
|
|
|
2374
|
-
|
|
2424
|
+
/*
|
|
2425
|
+
* ON TOP OF CARD, so every rule that changes Card's own layout carries Card's
|
|
2426
|
+
* class too. The two sheets meet at equal weight and the bundle orders them
|
|
2427
|
+
* by file name, which puts this one first: `.crewlet-card` and
|
|
2428
|
+
* `.crewlet-card--p-none` then won, and the compact row was drawn as a
|
|
2429
|
+
* padless column with its glyph on a line of its own.
|
|
2430
|
+
*/
|
|
2431
|
+
.crewlet-card.crewlet-artifact-card {
|
|
2375
2432
|
display: flex;
|
|
2376
2433
|
flex-direction: column;
|
|
2377
2434
|
min-width: 0;
|
|
@@ -2380,7 +2437,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2380
2437
|
text-decoration: none;
|
|
2381
2438
|
}
|
|
2382
2439
|
|
|
2383
|
-
.crewlet-artifact-card--compact {
|
|
2440
|
+
.crewlet-card.crewlet-artifact-card--compact {
|
|
2384
2441
|
flex-direction: row;
|
|
2385
2442
|
align-items: flex-start;
|
|
2386
2443
|
gap: var(--spacing-3);
|
|
@@ -2462,6 +2519,14 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2462
2519
|
min-width: 0;
|
|
2463
2520
|
}
|
|
2464
2521
|
|
|
2522
|
+
/* THE FACTS OF ONE LINE ARE A RUN, "Sheet · OPS · v12", each after the first
|
|
2523
|
+
opened by a quiet dot, so two short words never read as one phrase. */
|
|
2524
|
+
.crewlet-artifact-card__line > * + *::before {
|
|
2525
|
+
content: '·';
|
|
2526
|
+
margin-inline-end: var(--spacing-2);
|
|
2527
|
+
color: var(--color-text-tertiary);
|
|
2528
|
+
}
|
|
2529
|
+
|
|
2465
2530
|
.crewlet-artifact-card__owner,
|
|
2466
2531
|
.crewlet-artifact-card__presence {
|
|
2467
2532
|
display: inline-flex;
|
|
@@ -2546,7 +2611,7 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2546
2611
|
}
|
|
2547
2612
|
|
|
2548
2613
|
|
|
2549
|
-
/* ArtifactPanel-
|
|
2614
|
+
/* ArtifactPanel-HW3SU7CP.css */
|
|
2550
2615
|
/*
|
|
2551
2616
|
* The workspace is a row: the artifact's body, then at most one panel. The
|
|
2552
2617
|
* body scrolls itself, so a panel beside it stays in view however far the
|
|
@@ -2577,7 +2642,9 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2577
2642
|
}
|
|
2578
2643
|
|
|
2579
2644
|
.crewlet-artifact-panel {
|
|
2580
|
-
|
|
2645
|
+
/* THE TEXT WIDTH, every panel of facts, a list or a form: three widths for
|
|
2646
|
+
those moved the artifact's edge 80px between Details and History. */
|
|
2647
|
+
--crewlet-artifact-panel-width: 22.5rem;
|
|
2581
2648
|
display: flex;
|
|
2582
2649
|
flex: none;
|
|
2583
2650
|
flex-direction: column;
|
|
@@ -2587,10 +2654,6 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2587
2654
|
background: var(--color-surface-background);
|
|
2588
2655
|
}
|
|
2589
2656
|
|
|
2590
|
-
.crewlet-artifact-panel--sm {
|
|
2591
|
-
--crewlet-artifact-panel-width: 20rem;
|
|
2592
|
-
}
|
|
2593
|
-
|
|
2594
2657
|
.crewlet-artifact-panel--lg {
|
|
2595
2658
|
--crewlet-artifact-panel-width: 36rem;
|
|
2596
2659
|
}
|
|
@@ -2643,10 +2706,27 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2643
2706
|
gap: var(--spacing-1);
|
|
2644
2707
|
}
|
|
2645
2708
|
|
|
2709
|
+
/* THE BODY'S INSET IS PUBLISHED (--crewlet-artifact-panel-inset) for content
|
|
2710
|
+
that sticks to its scrollport: a sticky edge stops at the padding, so a
|
|
2711
|
+
foot with `bottom: 0` left a band under it that the content scrolled
|
|
2712
|
+
through; such a foot offsets itself by the inset to sit on the edge. */
|
|
2646
2713
|
.crewlet-artifact-panel__body {
|
|
2714
|
+
/* THE PANEL'S OWN MEASURE, so what it holds folds to the panel's width
|
|
2715
|
+
rather than the window's; and its sections head at the panel title's
|
|
2716
|
+
step, a level under it and never louder than it. */
|
|
2717
|
+
container: crewlet-artifact-panel / inline-size;
|
|
2718
|
+
--crewlet-section-title-size: var(--font-size-sm);
|
|
2719
|
+
--crewlet-artifact-panel-inset: var(--spacing-4);
|
|
2720
|
+
|
|
2721
|
+
/* A COLUMN, so content that should fit the panel rather than scroll it
|
|
2722
|
+
can: a child that sets `min-height: 0` shrinks to the room the body has
|
|
2723
|
+
(a sheet's rows, whose grid then scrolls itself), and every other child
|
|
2724
|
+
keeps its content's height and scrolls the body as before. */
|
|
2725
|
+
display: flex;
|
|
2726
|
+
flex-direction: column;
|
|
2647
2727
|
flex: 1 1 auto;
|
|
2648
2728
|
min-height: 0;
|
|
2649
|
-
padding: var(--
|
|
2729
|
+
padding: var(--crewlet-artifact-panel-inset);
|
|
2650
2730
|
overflow: auto;
|
|
2651
2731
|
overscroll-behavior: contain;
|
|
2652
2732
|
}
|
|
@@ -2660,7 +2740,10 @@ button.crewlet-account-row__who:focus-visible {
|
|
|
2660
2740
|
inset-inline-end: 0;
|
|
2661
2741
|
z-index: var(--z-index-overlay);
|
|
2662
2742
|
width: min(var(--crewlet-artifact-panel-width), 100%);
|
|
2663
|
-
|
|
2743
|
+
/* THE DRAWER'S LIFT, the shell's own rail drawer's: the large step falls
|
|
2744
|
+
below a box and left the panel's start edge reading as a cut through
|
|
2745
|
+
the artifact rather than a sheet over it. */
|
|
2746
|
+
box-shadow: var(--shadow-xl);
|
|
2664
2747
|
}
|
|
2665
2748
|
|
|
2666
2749
|
.crewlet-artifact-panel[data-expanded] {
|
|
@@ -4027,7 +4110,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4027
4110
|
}
|
|
4028
4111
|
|
|
4029
4112
|
|
|
4030
|
-
/* Callout-
|
|
4113
|
+
/* Callout-ZAVG3P66.css */
|
|
4031
4114
|
/*
|
|
4032
4115
|
* The callout: a status that stays in the content flow.
|
|
4033
4116
|
*
|
|
@@ -4052,8 +4135,15 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4052
4135
|
*/
|
|
4053
4136
|
--crewlet-callout-line: transparent;
|
|
4054
4137
|
|
|
4055
|
-
|
|
4056
|
-
|
|
4138
|
+
/* THE GLYPH, THE TEXT, AND AN ACTION'S COLUMN only where there is one: the
|
|
4139
|
+
third track is implicit, so a callout without an action keeps no gap
|
|
4140
|
+
for it at its end. A grid rather than a row, so a narrow callout can put
|
|
4141
|
+
its action under the text, in the text's own column, whatever the glyph
|
|
4142
|
+
is. */
|
|
4143
|
+
display: grid;
|
|
4144
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
4145
|
+
grid-auto-columns: auto;
|
|
4146
|
+
align-items: start;
|
|
4057
4147
|
gap: var(--spacing-2);
|
|
4058
4148
|
/* The engine's own: a tight strip rather than a padded card. This sits
|
|
4059
4149
|
above a screen or between two sections and takes a line or two of text,
|
|
@@ -4068,17 +4158,29 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4068
4158
|
line-height: var(--font-line-height-normal);
|
|
4069
4159
|
}
|
|
4070
4160
|
|
|
4161
|
+
/*
|
|
4162
|
+
* WITH AN ACTION, ONE LINE OF TEXT CENTRES ON THE BUTTON. The row is the
|
|
4163
|
+
* button's height and the text sat at its top, three pixels above the
|
|
4164
|
+
* button's label. The content is padded by half of what the control is
|
|
4165
|
+
* taller than a line, and the icon moved down with it, so a one-line callout
|
|
4166
|
+
* reads as one line and a longer one keeps its icon on its first line.
|
|
4167
|
+
*/
|
|
4168
|
+
.crewlet-callout:has(> .crewlet-callout__action) {
|
|
4169
|
+
--crewlet-callout-lead: max(0px, calc((var(--size-control-sm) - 1lh) / 2));
|
|
4170
|
+
/* Measured by its own width, so the action can move under the text. */
|
|
4171
|
+
container: crewlet-callout / inline-size;
|
|
4172
|
+
}
|
|
4173
|
+
|
|
4071
4174
|
.crewlet-callout__icon {
|
|
4072
4175
|
display: inline-flex;
|
|
4073
|
-
flex: none;
|
|
4074
4176
|
/* On the first line's optical centre rather than its box top, which a 16px
|
|
4075
4177
|
glyph beside a 13px line sits two pixels above. */
|
|
4076
|
-
margin-top: 2px;
|
|
4178
|
+
margin-top: calc(2px + var(--crewlet-callout-lead, 0px));
|
|
4077
4179
|
}
|
|
4078
4180
|
|
|
4079
4181
|
.crewlet-callout__content {
|
|
4080
4182
|
min-width: 0;
|
|
4081
|
-
|
|
4183
|
+
padding-block: var(--crewlet-callout-lead, 0px);
|
|
4082
4184
|
}
|
|
4083
4185
|
|
|
4084
4186
|
.crewlet-callout__title {
|
|
@@ -4089,10 +4191,31 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4089
4191
|
}
|
|
4090
4192
|
|
|
4091
4193
|
.crewlet-callout__action {
|
|
4092
|
-
|
|
4194
|
+
grid-column: 3;
|
|
4195
|
+
grid-row: 1;
|
|
4093
4196
|
align-self: center;
|
|
4094
4197
|
}
|
|
4095
4198
|
|
|
4199
|
+
/*
|
|
4200
|
+
* A NARROW CALLOUT PUTS ITS ACTION UNDER THE TEXT, at the start of the text's
|
|
4201
|
+
* column, so the sentence keeps the callout's whole measure. Beside it, a
|
|
4202
|
+
* phone's width left the message a column of a word or two a line. The text
|
|
4203
|
+
* no longer centres on a button beside it, so it sits at its own top.
|
|
4204
|
+
*/
|
|
4205
|
+
@container crewlet-callout (width < 28rem) {
|
|
4206
|
+
.crewlet-callout__icon,
|
|
4207
|
+
.crewlet-callout__content {
|
|
4208
|
+
--crewlet-callout-lead: 0px;
|
|
4209
|
+
}
|
|
4210
|
+
|
|
4211
|
+
.crewlet-callout__action {
|
|
4212
|
+
grid-column: 2;
|
|
4213
|
+
grid-row: 2;
|
|
4214
|
+
justify-self: start;
|
|
4215
|
+
align-self: start;
|
|
4216
|
+
}
|
|
4217
|
+
}
|
|
4218
|
+
|
|
4096
4219
|
/*
|
|
4097
4220
|
* Inline code inside a callout takes the callout's ink. A mono chip that kept
|
|
4098
4221
|
* its own neutral ink inside a danger banner read as the one part of the
|
|
@@ -4143,7 +4266,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4143
4266
|
}
|
|
4144
4267
|
|
|
4145
4268
|
|
|
4146
|
-
/* Canvas-
|
|
4269
|
+
/* Canvas-VUG2HLZK.css */
|
|
4147
4270
|
/*
|
|
4148
4271
|
* A bounded viewport (Canvas.tsx). It fills the box it is given and clips; the
|
|
4149
4272
|
* page's own scroller is never involved.
|
|
@@ -4179,11 +4302,24 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4179
4302
|
background-size: var(--spacing-5) var(--spacing-5);
|
|
4180
4303
|
}
|
|
4181
4304
|
|
|
4305
|
+
/*
|
|
4306
|
+
* A GRID ON THE CONTENT'S PLANE (`ground="grid"`): the same dots, but pitched
|
|
4307
|
+
* and placed by the view (`gridOf`), so they pan and zoom with the content.
|
|
4308
|
+
* The dots themselves stay one screen pixel, as a design tool's do.
|
|
4309
|
+
*/
|
|
4310
|
+
.crewlet-canvas[data-ground='grid'] {
|
|
4311
|
+
background-image: radial-gradient(var(--color-border-strong) 1px, transparent 1.2px);
|
|
4312
|
+
background-size:
|
|
4313
|
+
calc(var(--spacing-5) * var(--crewlet-canvas-grid-scale, 1))
|
|
4314
|
+
calc(var(--spacing-5) * var(--crewlet-canvas-grid-scale, 1));
|
|
4315
|
+
background-position: var(--crewlet-canvas-grid-x, 0) var(--crewlet-canvas-grid-y, 0);
|
|
4316
|
+
}
|
|
4317
|
+
|
|
4182
4318
|
.crewlet-canvas__viewport {
|
|
4183
4319
|
position: absolute;
|
|
4184
4320
|
inset: 0;
|
|
4185
4321
|
overflow: hidden;
|
|
4186
|
-
cursor: grab;
|
|
4322
|
+
cursor: var(--crewlet-canvas-cursor-hand, grab);
|
|
4187
4323
|
/* Until it is tapped, one finger belongs to the page's vertical scroll. */
|
|
4188
4324
|
touch-action: pan-y;
|
|
4189
4325
|
}
|
|
@@ -4201,8 +4337,28 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4201
4337
|
touch-action: none;
|
|
4202
4338
|
}
|
|
4203
4339
|
|
|
4204
|
-
|
|
4205
|
-
|
|
4340
|
+
/*
|
|
4341
|
+
* THE POINTER SAYS WHAT A PRESS WILL DO. The drawings are the component's
|
|
4342
|
+
* (`CURSORS`, written on the root), each falling back to its keyword. A pan in
|
|
4343
|
+
* progress shows the closed hand whatever the tool, and it is set on the whole
|
|
4344
|
+
* canvas rather than the field, so a drag that crosses a board or a note keeps
|
|
4345
|
+
* the hand it started with.
|
|
4346
|
+
*/
|
|
4347
|
+
.crewlet-canvas[data-cursor='pointer'] .crewlet-canvas__viewport {
|
|
4348
|
+
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
4349
|
+
}
|
|
4350
|
+
|
|
4351
|
+
.crewlet-canvas[data-cursor='crosshair'] .crewlet-canvas__viewport {
|
|
4352
|
+
cursor: var(--crewlet-canvas-cursor-crosshair, crosshair);
|
|
4353
|
+
}
|
|
4354
|
+
|
|
4355
|
+
.crewlet-canvas[data-cursor='text'] .crewlet-canvas__viewport {
|
|
4356
|
+
cursor: var(--crewlet-canvas-cursor-text, text);
|
|
4357
|
+
}
|
|
4358
|
+
|
|
4359
|
+
.crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport,
|
|
4360
|
+
.crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport * {
|
|
4361
|
+
cursor: var(--crewlet-canvas-cursor-grabbing, grabbing);
|
|
4206
4362
|
user-select: none;
|
|
4207
4363
|
}
|
|
4208
4364
|
|
|
@@ -4365,6 +4521,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4365
4521
|
display: none;
|
|
4366
4522
|
}
|
|
4367
4523
|
|
|
4524
|
+
/*
|
|
4525
|
+
* THE NOTE GROWS AWAY FROM THE CORNER. It comes and goes as the canvas's state
|
|
4526
|
+
* does, and drawn on the corner's side of the zoom bar it would push the bar
|
|
4527
|
+
* out from under a pointer on its way to it; so in a bottom corner it is drawn
|
|
4528
|
+
* above the bar, and the bar never moves.
|
|
4529
|
+
*/
|
|
4530
|
+
.crewlet-canvas__controls:not([data-placement='top-right']) .crewlet-canvas__hint {
|
|
4531
|
+
order: -1;
|
|
4532
|
+
}
|
|
4533
|
+
|
|
4368
4534
|
/*
|
|
4369
4535
|
* THE ZOOM READOUT, between the two steppers. It says where the view stands,
|
|
4370
4536
|
* which two chevrons never do, and it is the way to a number without pressing a
|
|
@@ -4407,6 +4573,22 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4407
4573
|
border-radius: var(--radius-chip);
|
|
4408
4574
|
}
|
|
4409
4575
|
|
|
4576
|
+
/* Actual size, as a ratio: the readout's own control, at the button step. */
|
|
4577
|
+
.crewlet-canvas__actual {
|
|
4578
|
+
width: var(--size-control-sm);
|
|
4579
|
+
}
|
|
4580
|
+
|
|
4581
|
+
/*
|
|
4582
|
+
* A control's tip with its shortcut (ShortcutTip.tsx): the words, then the
|
|
4583
|
+
* keycaps, on one line.
|
|
4584
|
+
*/
|
|
4585
|
+
.crewlet-shortcut-tip {
|
|
4586
|
+
display: inline-flex;
|
|
4587
|
+
align-items: center;
|
|
4588
|
+
gap: var(--spacing-2);
|
|
4589
|
+
white-space: nowrap;
|
|
4590
|
+
}
|
|
4591
|
+
|
|
4410
4592
|
.crewlet-canvas__zoom:hover:not(:disabled) {
|
|
4411
4593
|
color: var(--color-text-primary);
|
|
4412
4594
|
background: var(--color-surface-hover);
|
|
@@ -4474,7 +4656,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4474
4656
|
}
|
|
4475
4657
|
|
|
4476
4658
|
|
|
4477
|
-
/* CanvasBoard-
|
|
4659
|
+
/* CanvasBoard-5NNSKY6A.css */
|
|
4478
4660
|
/*
|
|
4479
4661
|
* A canvas of artboards and notes (CanvasBoard.tsx). Boards and notes are laid
|
|
4480
4662
|
* out in canvas pixels inside the canvas's world and scale with it; their
|
|
@@ -4482,7 +4664,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4482
4664
|
* writes on the layer, so it stays one size on screen.
|
|
4483
4665
|
*/
|
|
4484
4666
|
|
|
4667
|
+
/*
|
|
4668
|
+
* A SIZE CONTAINER BY ITS WIDTH, so the palette can tell a canvas too narrow
|
|
4669
|
+
* to hold it beside the zoom bar on one line (see below).
|
|
4670
|
+
*/
|
|
4485
4671
|
.crewlet-canvas-board {
|
|
4672
|
+
container: crewlet-canvas-board / inline-size;
|
|
4486
4673
|
height: 100%;
|
|
4487
4674
|
min-height: 0;
|
|
4488
4675
|
}
|
|
@@ -4493,6 +4680,43 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4493
4680
|
position: relative;
|
|
4494
4681
|
}
|
|
4495
4682
|
|
|
4683
|
+
/*
|
|
4684
|
+
* UNDER HAND, TEXT AND STICKY NOTHING ON THE CANVAS TAKES A PRESS: every press
|
|
4685
|
+
* reaches the field, which pans it (Hand) or places a note on it (Text and
|
|
4686
|
+
* Sticky), and nothing is outlined under a pointer that cannot select it.
|
|
4687
|
+
*/
|
|
4688
|
+
.crewlet-canvas-board:not([data-tool='move']) .crewlet-canvas-board__layer {
|
|
4689
|
+
pointer-events: none;
|
|
4690
|
+
}
|
|
4691
|
+
|
|
4692
|
+
/* ---- the tool palette, floating at the foot of the field ----------------- */
|
|
4693
|
+
|
|
4694
|
+
/*
|
|
4695
|
+
* CENTRED AT THE FOOT, on the zoom bar's line: the two bars are one control
|
|
4696
|
+
* step tall and stand the same inset from the field's edge.
|
|
4697
|
+
*/
|
|
4698
|
+
.crewlet-canvas-board__tools {
|
|
4699
|
+
position: absolute;
|
|
4700
|
+
bottom: var(--spacing-3);
|
|
4701
|
+
left: 50%;
|
|
4702
|
+
z-index: var(--z-index-raised);
|
|
4703
|
+
transform: translateX(-50%);
|
|
4704
|
+
}
|
|
4705
|
+
|
|
4706
|
+
/*
|
|
4707
|
+
* A NARROW CANVAS (a phone, a split pane) has no room at its foot for the
|
|
4708
|
+
* palette between the zoom bar and the edge, so the palette moves to the top
|
|
4709
|
+
* left corner, which the zoom bar never takes.
|
|
4710
|
+
*/
|
|
4711
|
+
@container crewlet-canvas-board (width < 36rem) {
|
|
4712
|
+
.crewlet-canvas-board__tools {
|
|
4713
|
+
top: var(--spacing-3);
|
|
4714
|
+
bottom: auto;
|
|
4715
|
+
left: var(--spacing-3);
|
|
4716
|
+
transform: none;
|
|
4717
|
+
}
|
|
4718
|
+
}
|
|
4719
|
+
|
|
4496
4720
|
/* ---- a board ------------------------------------------------------------ */
|
|
4497
4721
|
|
|
4498
4722
|
.crewlet-canvas-board__board {
|
|
@@ -4500,13 +4724,37 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4500
4724
|
box-sizing: border-box;
|
|
4501
4725
|
}
|
|
4502
4726
|
|
|
4727
|
+
/*
|
|
4728
|
+
* A BOARD'S EDGE IS A HAIRLINE, one screen pixel at every zoom, drawn as a
|
|
4729
|
+
* ring outside the box rather than a border inside it: a border would take
|
|
4730
|
+
* its width out of the page the board runs, and counter-scaled to stay one
|
|
4731
|
+
* pixel it would take more the further out the canvas is zoomed. The strong
|
|
4732
|
+
* hairline's ink, so a white page still has an edge on a light field and a
|
|
4733
|
+
* dark one on a dark field.
|
|
4734
|
+
*/
|
|
4503
4735
|
.crewlet-canvas-board__body {
|
|
4504
4736
|
position: absolute;
|
|
4505
4737
|
inset: 0;
|
|
4506
4738
|
overflow: hidden;
|
|
4507
4739
|
background: var(--color-surface-elevated);
|
|
4508
|
-
|
|
4509
|
-
|
|
4740
|
+
box-shadow: 0 0 0 calc(1px * var(--crewlet-canvas-board-unzoom)) var(--color-border-strong);
|
|
4741
|
+
}
|
|
4742
|
+
|
|
4743
|
+
/*
|
|
4744
|
+
* HOVER, then SELECTION, in the accent: one screen pixel and then two, over
|
|
4745
|
+
* the hairline. Hovering a board's name is hovering its board, which is how a
|
|
4746
|
+
* reader finds the board a name belongs to on a crowded canvas.
|
|
4747
|
+
*/
|
|
4748
|
+
.crewlet-canvas-board__board:hover .crewlet-canvas-board__body,
|
|
4749
|
+
.crewlet-canvas-board__note:hover {
|
|
4750
|
+
outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-brand-accent);
|
|
4751
|
+
outline-offset: 0;
|
|
4752
|
+
}
|
|
4753
|
+
|
|
4754
|
+
.crewlet-canvas-board__board[data-selected] .crewlet-canvas-board__body,
|
|
4755
|
+
.crewlet-canvas-board__note[data-selected] {
|
|
4756
|
+
outline: calc(2px * var(--crewlet-canvas-board-unzoom)) solid var(--color-brand-accent);
|
|
4757
|
+
outline-offset: 0;
|
|
4510
4758
|
}
|
|
4511
4759
|
|
|
4512
4760
|
/* The page a live board runs fills its frame exactly. */
|
|
@@ -4528,14 +4776,10 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4528
4776
|
.crewlet-canvas-board__shield {
|
|
4529
4777
|
position: absolute;
|
|
4530
4778
|
inset: 0;
|
|
4531
|
-
cursor: pointer;
|
|
4779
|
+
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
4532
4780
|
}
|
|
4533
4781
|
|
|
4534
|
-
|
|
4535
|
-
cursor: inherit;
|
|
4536
|
-
}
|
|
4537
|
-
|
|
4538
|
-
/* A board that is not running draws its title and size at screen size. */
|
|
4782
|
+
/* A board that is not running draws its size, and why, at screen size. */
|
|
4539
4783
|
.crewlet-canvas-board__placeholder {
|
|
4540
4784
|
position: absolute;
|
|
4541
4785
|
inset: 0;
|
|
@@ -4549,25 +4793,59 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4549
4793
|
text-align: center;
|
|
4550
4794
|
}
|
|
4551
4795
|
|
|
4552
|
-
/*
|
|
4553
|
-
|
|
4796
|
+
/*
|
|
4797
|
+
* ONE BLOCK, SCALED ONCE: its lines keep their spacing at screen size rather
|
|
4798
|
+
* than each line shrinking back into the space the zoom left it. It is held to
|
|
4799
|
+
* the board's width ON SCREEN (the board's own width times the zoom, less a
|
|
4800
|
+
* margin each side), so a line the component judged to fit never runs past
|
|
4801
|
+
* the board's edges into the boards beside it.
|
|
4802
|
+
*/
|
|
4554
4803
|
.crewlet-canvas-board__placeholder-text {
|
|
4555
4804
|
display: flex;
|
|
4556
4805
|
flex-direction: column;
|
|
4557
4806
|
align-items: center;
|
|
4558
4807
|
gap: var(--spacing-1);
|
|
4559
4808
|
flex: none;
|
|
4809
|
+
box-sizing: border-box;
|
|
4810
|
+
max-width: calc(100% * var(--crewlet-canvas-board-zoom));
|
|
4811
|
+
padding-inline: var(--spacing-2);
|
|
4560
4812
|
transform: scale(var(--crewlet-canvas-board-unzoom));
|
|
4561
4813
|
}
|
|
4562
4814
|
|
|
4563
|
-
.crewlet-canvas-board__placeholder-
|
|
4815
|
+
.crewlet-canvas-board__placeholder-text > * {
|
|
4816
|
+
max-width: 100%;
|
|
4817
|
+
overflow: hidden;
|
|
4818
|
+
text-overflow: ellipsis;
|
|
4819
|
+
white-space: nowrap;
|
|
4820
|
+
}
|
|
4821
|
+
|
|
4822
|
+
.crewlet-canvas-board__placeholder-size {
|
|
4564
4823
|
color: var(--color-text-secondary);
|
|
4565
|
-
font-size: var(--font-size-sm);
|
|
4566
4824
|
font-weight: var(--font-weight-medium);
|
|
4825
|
+
font-variant-numeric: tabular-nums;
|
|
4567
4826
|
}
|
|
4568
4827
|
|
|
4569
4828
|
/* ---- chrome, at screen size --------------------------------------------- */
|
|
4570
4829
|
|
|
4830
|
+
/*
|
|
4831
|
+
* THE CHROME IS DRAWN OVER THE CONTENT, every board's and note's over every
|
|
4832
|
+
* board and note, as a design tool draws its frame names. It is counter-scaled
|
|
4833
|
+
* to one size on screen while the content shrinks with the zoom, so far out a
|
|
4834
|
+
* name reaches over the note or board above it; drawn in document order it
|
|
4835
|
+
* went under a note laid out after its board, and that note took every press
|
|
4836
|
+
* meant for the name and the open control.
|
|
4837
|
+
*/
|
|
4838
|
+
.crewlet-canvas-board__chrome,
|
|
4839
|
+
.crewlet-canvas-board__note-tools,
|
|
4840
|
+
.crewlet-canvas-board__resize {
|
|
4841
|
+
z-index: 1;
|
|
4842
|
+
}
|
|
4843
|
+
|
|
4844
|
+
/*
|
|
4845
|
+
* ONE LINE OF TYPE TALL, whatever sits in it: the open control is centred on
|
|
4846
|
+
* the line and allowed past it, so a row of boards zoomed far out loses only
|
|
4847
|
+
* a title's height to the names above it rather than a button's.
|
|
4848
|
+
*/
|
|
4571
4849
|
.crewlet-canvas-board__chrome {
|
|
4572
4850
|
position: absolute;
|
|
4573
4851
|
bottom: 100%;
|
|
@@ -4577,19 +4855,58 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4577
4855
|
gap: var(--spacing-1);
|
|
4578
4856
|
box-sizing: border-box;
|
|
4579
4857
|
width: calc(100% * var(--crewlet-canvas-board-zoom));
|
|
4858
|
+
height: calc(var(--font-size-xs) * var(--font-line-height-normal) + var(--spacing-1));
|
|
4580
4859
|
padding-bottom: var(--spacing-1);
|
|
4581
4860
|
transform: scale(var(--crewlet-canvas-board-unzoom));
|
|
4582
4861
|
transform-origin: bottom left;
|
|
4583
4862
|
}
|
|
4584
4863
|
|
|
4864
|
+
/* A board drawn too narrow to name goes unnamed (`boardRoom`). */
|
|
4865
|
+
.crewlet-canvas-board__board[data-untitled] > .crewlet-canvas-board__chrome {
|
|
4866
|
+
display: none;
|
|
4867
|
+
}
|
|
4868
|
+
|
|
4869
|
+
.crewlet-canvas-board__open {
|
|
4870
|
+
flex: none;
|
|
4871
|
+
}
|
|
4872
|
+
|
|
4873
|
+
/*
|
|
4874
|
+
* THE OPEN CONTROL IS THE BOARD'S, NOT THE CANVAS'S: where a pointer can
|
|
4875
|
+
* hover, it is drawn on the board under it, the selected board and the
|
|
4876
|
+
* control that has focus, so a canvas at rest shows its names and nothing
|
|
4877
|
+
* else. A touch screen has no hover to find it by, so it is always drawn
|
|
4878
|
+
* there.
|
|
4879
|
+
*/
|
|
4880
|
+
@media (hover: hover) {
|
|
4881
|
+
/*
|
|
4882
|
+
* HIDDEN, IT TAKES NO ROOM: out of the row rather than only transparent, so
|
|
4883
|
+
* a narrow board's name has the whole width to itself at rest instead of
|
|
4884
|
+
* being cut to its first letter beside an empty slot. It still takes focus,
|
|
4885
|
+
* and is put back in the row when it has it.
|
|
4886
|
+
*/
|
|
4887
|
+
.crewlet-canvas-board__board:not(:hover, [data-selected]) .crewlet-canvas-board__open:not(:focus-visible) {
|
|
4888
|
+
position: absolute;
|
|
4889
|
+
opacity: 0;
|
|
4890
|
+
pointer-events: none;
|
|
4891
|
+
}
|
|
4892
|
+
}
|
|
4893
|
+
|
|
4894
|
+
/* The board's name: small, quiet, and the accent once its board is picked out. */
|
|
4585
4895
|
.crewlet-canvas-board__title {
|
|
4586
4896
|
min-width: 0;
|
|
4587
4897
|
overflow: hidden;
|
|
4588
|
-
color: var(--color-text-
|
|
4898
|
+
color: var(--color-text-tertiary);
|
|
4589
4899
|
font-size: var(--font-size-xs);
|
|
4590
4900
|
font-weight: var(--font-weight-medium);
|
|
4901
|
+
line-height: var(--font-line-height-normal);
|
|
4591
4902
|
text-overflow: ellipsis;
|
|
4592
4903
|
white-space: nowrap;
|
|
4904
|
+
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
4905
|
+
}
|
|
4906
|
+
|
|
4907
|
+
.crewlet-canvas-board__board:hover .crewlet-canvas-board__title,
|
|
4908
|
+
.crewlet-canvas-board__board[data-selected] .crewlet-canvas-board__title {
|
|
4909
|
+
color: var(--color-brand-accent-ink);
|
|
4593
4910
|
}
|
|
4594
4911
|
|
|
4595
4912
|
.crewlet-canvas-board__handle {
|
|
@@ -4597,10 +4914,10 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4597
4914
|
margin: 0;
|
|
4598
4915
|
padding: var(--spacing-1) var(--spacing-2);
|
|
4599
4916
|
border: 1px solid transparent;
|
|
4600
|
-
border-radius: var(--radius-
|
|
4917
|
+
border-radius: var(--radius-md);
|
|
4601
4918
|
background: transparent;
|
|
4602
4919
|
font: inherit;
|
|
4603
|
-
cursor:
|
|
4920
|
+
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
4604
4921
|
touch-action: none;
|
|
4605
4922
|
}
|
|
4606
4923
|
|
|
@@ -4609,6 +4926,21 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4609
4926
|
border-color: var(--color-border-default);
|
|
4610
4927
|
}
|
|
4611
4928
|
|
|
4929
|
+
/*
|
|
4930
|
+
* A NAME THAT IS ALSO A MOVE HANDLE keeps the name's type and its place: the
|
|
4931
|
+
* handle's padding and edge are taken back by a margin the same size, so the
|
|
4932
|
+
* letters stay on the board's left edge and the title's line, and only the
|
|
4933
|
+
* hover's box reaches past them.
|
|
4934
|
+
*/
|
|
4935
|
+
.crewlet-canvas-board__title.crewlet-canvas-board__handle {
|
|
4936
|
+
flex: 0 1 auto;
|
|
4937
|
+
margin-block: calc(-1 * (var(--spacing-1) + 1px));
|
|
4938
|
+
margin-inline-start: calc(-1 * (var(--spacing-2) + 1px));
|
|
4939
|
+
font-size: var(--font-size-xs);
|
|
4940
|
+
font-weight: var(--font-weight-medium);
|
|
4941
|
+
line-height: var(--font-line-height-normal);
|
|
4942
|
+
}
|
|
4943
|
+
|
|
4612
4944
|
/* Both handles draw an edge of their own, so the ring sits over it. */
|
|
4613
4945
|
.crewlet-canvas-board__handle:focus-visible,
|
|
4614
4946
|
.crewlet-canvas-board__resize:focus-visible {
|
|
@@ -4616,55 +4948,114 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4616
4948
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
4617
4949
|
}
|
|
4618
4950
|
|
|
4951
|
+
/*
|
|
4952
|
+
* A RESIZE CORNER: a full pointer target, drawn as the small square a design
|
|
4953
|
+
* tool draws, centred on its corner and counter-scaled so it is one size on
|
|
4954
|
+
* screen. Drawn on a selected item, and on the keyboard's corner while it has
|
|
4955
|
+
* focus; otherwise it is neither seen nor pressed.
|
|
4956
|
+
*/
|
|
4619
4957
|
.crewlet-canvas-board__resize {
|
|
4620
4958
|
position: absolute;
|
|
4621
|
-
|
|
4622
|
-
|
|
4623
|
-
width: var(--spacing-
|
|
4624
|
-
height: var(--spacing-
|
|
4959
|
+
display: grid;
|
|
4960
|
+
place-items: center;
|
|
4961
|
+
width: var(--spacing-6);
|
|
4962
|
+
height: var(--spacing-6);
|
|
4625
4963
|
margin: 0;
|
|
4626
4964
|
padding: 0;
|
|
4627
|
-
border:
|
|
4965
|
+
border: none;
|
|
4966
|
+
background: transparent;
|
|
4967
|
+
opacity: 0;
|
|
4968
|
+
pointer-events: none;
|
|
4969
|
+
touch-action: none;
|
|
4970
|
+
}
|
|
4971
|
+
|
|
4972
|
+
.crewlet-canvas-board__resize::before {
|
|
4973
|
+
content: '';
|
|
4974
|
+
width: var(--spacing-2);
|
|
4975
|
+
height: var(--spacing-2);
|
|
4976
|
+
box-sizing: border-box;
|
|
4977
|
+
border: 1px solid var(--color-brand-accent);
|
|
4628
4978
|
border-radius: var(--radius-xs);
|
|
4629
4979
|
background: var(--color-surface-elevated);
|
|
4980
|
+
}
|
|
4981
|
+
|
|
4982
|
+
.crewlet-canvas-board__board[data-selected] > .crewlet-canvas-board__resize,
|
|
4983
|
+
.crewlet-canvas-board__note[data-selected] .crewlet-canvas-board__resize,
|
|
4984
|
+
.crewlet-canvas-board__resize:focus-visible {
|
|
4985
|
+
opacity: 1;
|
|
4986
|
+
pointer-events: auto;
|
|
4987
|
+
}
|
|
4988
|
+
|
|
4989
|
+
.crewlet-canvas-board__resize[data-corner='resize-nw'] {
|
|
4990
|
+
top: 0;
|
|
4991
|
+
left: 0;
|
|
4630
4992
|
cursor: nwse-resize;
|
|
4631
|
-
|
|
4632
|
-
transform: translate(50%, 50%) scale(var(--crewlet-canvas-board-unzoom));
|
|
4993
|
+
transform: translate(-50%, -50%) scale(var(--crewlet-canvas-board-unzoom));
|
|
4633
4994
|
}
|
|
4634
4995
|
|
|
4635
|
-
.crewlet-canvas-
|
|
4636
|
-
|
|
4637
|
-
|
|
4996
|
+
.crewlet-canvas-board__resize[data-corner='resize-ne'] {
|
|
4997
|
+
top: 0;
|
|
4998
|
+
right: 0;
|
|
4999
|
+
cursor: nesw-resize;
|
|
5000
|
+
transform: translate(50%, -50%) scale(var(--crewlet-canvas-board-unzoom));
|
|
5001
|
+
}
|
|
5002
|
+
|
|
5003
|
+
.crewlet-canvas-board__resize[data-corner='resize-sw'] {
|
|
5004
|
+
bottom: 0;
|
|
4638
5005
|
left: 0;
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
|
|
4644
|
-
|
|
4645
|
-
|
|
5006
|
+
cursor: nesw-resize;
|
|
5007
|
+
transform: translate(-50%, 50%) scale(var(--crewlet-canvas-board-unzoom));
|
|
5008
|
+
}
|
|
5009
|
+
|
|
5010
|
+
.crewlet-canvas-board__resize[data-corner='resize-se'] {
|
|
5011
|
+
right: 0;
|
|
5012
|
+
bottom: 0;
|
|
5013
|
+
cursor: nwse-resize;
|
|
5014
|
+
transform: translate(50%, 50%) scale(var(--crewlet-canvas-board-unzoom));
|
|
4646
5015
|
}
|
|
4647
5016
|
|
|
5017
|
+
|
|
4648
5018
|
/* ---- a note ------------------------------------------------------------- */
|
|
4649
5019
|
|
|
4650
5020
|
.crewlet-canvas-board__note {
|
|
4651
5021
|
position: absolute;
|
|
4652
5022
|
box-sizing: border-box;
|
|
5023
|
+
cursor: var(--crewlet-canvas-cursor-pointer, default);
|
|
5024
|
+
}
|
|
5025
|
+
|
|
5026
|
+
/*
|
|
5027
|
+
* A sticky's tools and corners sit outside its paper, so the paper does not
|
|
5028
|
+
* clip; its words are held to the paper instead.
|
|
5029
|
+
*/
|
|
5030
|
+
.crewlet-canvas-board__note[data-kind='sticky'] {
|
|
5031
|
+
overflow: visible;
|
|
5032
|
+
}
|
|
5033
|
+
|
|
5034
|
+
.crewlet-canvas-board__note[data-kind='sticky'] .crewlet-canvas-board__note-text {
|
|
5035
|
+
max-height: 100%;
|
|
5036
|
+
overflow: hidden;
|
|
4653
5037
|
}
|
|
4654
5038
|
|
|
4655
5039
|
/*
|
|
4656
|
-
* A TITLE IS SET
|
|
4657
|
-
*
|
|
5040
|
+
* A TITLE IS SET TO FILL ITS BOX, so the author's frame is the type size: a
|
|
5041
|
+
* heading over a group of boards is as large as the box drawn for it, and a
|
|
5042
|
+
* long one is set smaller rather than run over the boards beside it.
|
|
4658
5043
|
*/
|
|
4659
5044
|
.crewlet-canvas-board__note[data-kind='title'] {
|
|
4660
|
-
container-type: size;
|
|
4661
5045
|
display: flex;
|
|
4662
5046
|
align-items: center;
|
|
4663
5047
|
color: var(--color-text-primary);
|
|
4664
5048
|
}
|
|
4665
5049
|
|
|
5050
|
+
/*
|
|
5051
|
+
* The size is the component's (`titleSize`), fitted to the box both ways. The
|
|
5052
|
+
* TEXT clips at the box, not the box itself: the box's tools and corners sit
|
|
5053
|
+
* outside it, and a box that clipped would cut them away.
|
|
5054
|
+
*/
|
|
4666
5055
|
.crewlet-canvas-board__note[data-kind='title'] .crewlet-canvas-board__note-text {
|
|
4667
|
-
|
|
5056
|
+
min-width: 0;
|
|
5057
|
+
max-width: 100%;
|
|
5058
|
+
overflow: hidden;
|
|
4668
5059
|
font-weight: var(--font-weight-semibold);
|
|
4669
5060
|
letter-spacing: var(--font-letter-spacing-tight);
|
|
4670
5061
|
line-height: var(--font-line-height-tight);
|
|
@@ -4705,6 +5096,23 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4705
5096
|
transform-origin: bottom left;
|
|
4706
5097
|
}
|
|
4707
5098
|
|
|
5099
|
+
/*
|
|
5100
|
+
* A NOTE'S TOOLS ARE THE NOTE'S, as a board's open control is the board's:
|
|
5101
|
+
* where a pointer can hover they are drawn on the note under it, the selected
|
|
5102
|
+
* note and the note holding focus, rather than over every note at once.
|
|
5103
|
+
*/
|
|
5104
|
+
@media (hover: hover) {
|
|
5105
|
+
.crewlet-canvas-board__note-tools {
|
|
5106
|
+
opacity: 0;
|
|
5107
|
+
}
|
|
5108
|
+
|
|
5109
|
+
.crewlet-canvas-board__note:hover .crewlet-canvas-board__note-tools,
|
|
5110
|
+
.crewlet-canvas-board__note[data-selected] .crewlet-canvas-board__note-tools,
|
|
5111
|
+
.crewlet-canvas-board__note:focus-within .crewlet-canvas-board__note-tools {
|
|
5112
|
+
opacity: 1;
|
|
5113
|
+
}
|
|
5114
|
+
}
|
|
5115
|
+
|
|
4708
5116
|
.crewlet-canvas-board__note-move {
|
|
4709
5117
|
width: var(--spacing-6);
|
|
4710
5118
|
height: var(--spacing-6);
|
|
@@ -4752,6 +5160,43 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
4752
5160
|
}
|
|
4753
5161
|
|
|
4754
5162
|
|
|
5163
|
+
/* CanvasToolbar-EM5EVZED.css */
|
|
5164
|
+
/*
|
|
5165
|
+
* A canvas's tool palette (CanvasToolbar.tsx): the zoom bar's glass surface
|
|
5166
|
+
* and its control step (the small one, which every toolbar and panel control
|
|
5167
|
+
* takes), so the two bars stand the same height on the field's foot,
|
|
5168
|
+
* with the tool in hand drawn SOLID in the accent rather than the soft tint a
|
|
5169
|
+
* toggle takes elsewhere, because it is the one fact about the palette a
|
|
5170
|
+
* reader checks from across the field before every press.
|
|
5171
|
+
*/
|
|
5172
|
+
|
|
5173
|
+
.crewlet-canvas-toolbar.crewlet-toolbar {
|
|
5174
|
+
display: inline-flex;
|
|
5175
|
+
align-items: center;
|
|
5176
|
+
gap: var(--spacing-1);
|
|
5177
|
+
padding: var(--spacing-1);
|
|
5178
|
+
background: var(--color-surface-glass);
|
|
5179
|
+
backdrop-filter: blur(var(--blur-sm));
|
|
5180
|
+
border: 1px solid var(--color-border-default);
|
|
5181
|
+
border-radius: var(--radius-md);
|
|
5182
|
+
box-shadow: var(--shadow-xs);
|
|
5183
|
+
}
|
|
5184
|
+
|
|
5185
|
+
.crewlet-canvas-toolbar .crewlet-icon-btn {
|
|
5186
|
+
border-radius: var(--radius-chip);
|
|
5187
|
+
}
|
|
5188
|
+
|
|
5189
|
+
.crewlet-canvas-toolbar .crewlet-icon-btn[aria-pressed='true'] {
|
|
5190
|
+
color: var(--color-text-on-accent);
|
|
5191
|
+
background: var(--color-brand-accent);
|
|
5192
|
+
}
|
|
5193
|
+
|
|
5194
|
+
.crewlet-canvas-toolbar .crewlet-icon-btn[aria-pressed='true']:hover:not(:disabled) {
|
|
5195
|
+
color: var(--color-text-on-accent);
|
|
5196
|
+
background: var(--color-brand-accent-hover);
|
|
5197
|
+
}
|
|
5198
|
+
|
|
5199
|
+
|
|
4755
5200
|
/* Card-KJOYHDTJ.css */
|
|
4756
5201
|
/*
|
|
4757
5202
|
* Card, THE surface. Everything on a screen is a card, a row inside one, or a
|
|
@@ -5286,7 +5731,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5286
5731
|
}
|
|
5287
5732
|
|
|
5288
5733
|
|
|
5289
|
-
/* Charts-
|
|
5734
|
+
/* Charts-MBJG72BS.css */
|
|
5290
5735
|
/* The chart kit: a legend, a ranked bar list, a stacked bar, stacked
|
|
5291
5736
|
columns, an activity strip, a time series and the reading layer they share. Hand-drawn rather than a charting library, for one reason that
|
|
5292
5737
|
decides it: every mark here reads tokens, in two themes, at the contrast
|
|
@@ -5328,6 +5773,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5328
5773
|
background: var(--crewlet-legend-swatch-color, var(--color-data-other));
|
|
5329
5774
|
}
|
|
5330
5775
|
|
|
5776
|
+
.crewlet-legend__swatch--line {
|
|
5777
|
+
width: 12px;
|
|
5778
|
+
height: 2px;
|
|
5779
|
+
border-radius: calc(var(--radius-xs) / 4);
|
|
5780
|
+
}
|
|
5781
|
+
|
|
5331
5782
|
.crewlet-legend__label {
|
|
5332
5783
|
overflow: hidden;
|
|
5333
5784
|
text-overflow: ellipsis;
|
|
@@ -5446,7 +5897,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5446
5897
|
*/
|
|
5447
5898
|
.crewlet-bar-list__sub,
|
|
5448
5899
|
.crewlet-bar-list__more,
|
|
5449
|
-
.crewlet-
|
|
5900
|
+
.crewlet-chart-empty {
|
|
5450
5901
|
font-size: var(--font-size-xs);
|
|
5451
5902
|
color: var(--color-text-tertiary);
|
|
5452
5903
|
}
|
|
@@ -5463,9 +5914,22 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5463
5914
|
* A card draws its own content in a body now, so a padding here is the panel's
|
|
5464
5915
|
* inset a second time.
|
|
5465
5916
|
*/
|
|
5466
|
-
.crewlet-
|
|
5917
|
+
.crewlet-chart-empty {
|
|
5918
|
+
box-sizing: border-box;
|
|
5919
|
+
display: flex;
|
|
5920
|
+
align-items: center;
|
|
5921
|
+
justify-content: center;
|
|
5922
|
+
height: 100%;
|
|
5467
5923
|
margin: 0;
|
|
5468
5924
|
padding: 0;
|
|
5925
|
+
line-height: var(--font-line-height-normal);
|
|
5926
|
+
text-align: center;
|
|
5927
|
+
}
|
|
5928
|
+
|
|
5929
|
+
.crewlet-chart-empty--start {
|
|
5930
|
+
display: block;
|
|
5931
|
+
height: auto;
|
|
5932
|
+
text-align: start;
|
|
5469
5933
|
}
|
|
5470
5934
|
|
|
5471
5935
|
.crewlet-bar-list__sub {
|
|
@@ -5692,6 +6156,8 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5692
6156
|
row-gap: var(--spacing-1);
|
|
5693
6157
|
margin: 0;
|
|
5694
6158
|
min-width: 0;
|
|
6159
|
+
/* Measured by its own width, for the dates under the plot. */
|
|
6160
|
+
container: crewlet-stacked-columns / inline-size;
|
|
5695
6161
|
}
|
|
5696
6162
|
|
|
5697
6163
|
/*
|
|
@@ -5716,12 +6182,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5716
6182
|
align-items: flex-end;
|
|
5717
6183
|
}
|
|
5718
6184
|
|
|
6185
|
+
/*
|
|
6186
|
+
* The scale's words are set as the dates under the plot are, the sans at the
|
|
6187
|
+
* caption step with tabular figures, so the two axes of one chart read as one
|
|
6188
|
+
* scale. They were the mono at the step below, beside dates in the sans.
|
|
6189
|
+
*/
|
|
5719
6190
|
.crewlet-stacked-columns__tick {
|
|
5720
6191
|
display: flex;
|
|
5721
6192
|
align-items: center;
|
|
5722
6193
|
height: 0;
|
|
5723
|
-
font-
|
|
5724
|
-
font-size: var(--font-size-2xs);
|
|
6194
|
+
font-size: var(--font-size-xs);
|
|
5725
6195
|
line-height: var(--font-line-height-tight);
|
|
5726
6196
|
color: var(--color-text-tertiary);
|
|
5727
6197
|
font-variant-numeric: tabular-nums;
|
|
@@ -5736,7 +6206,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5736
6206
|
* keeps that half line above the plot itself.
|
|
5737
6207
|
*/
|
|
5738
6208
|
.crewlet-stacked-columns--headless {
|
|
5739
|
-
padding-block-start: calc(var(--font-size-
|
|
6209
|
+
padding-block-start: calc(var(--font-size-xs) * var(--font-line-height-tight) / 2);
|
|
5740
6210
|
}
|
|
5741
6211
|
|
|
5742
6212
|
.crewlet-stacked-columns__plot {
|
|
@@ -5786,14 +6256,23 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5786
6256
|
/*
|
|
5787
6257
|
* THE COLUMN IS ITS TOTAL'S HEIGHT (a style property), and its parts share it
|
|
5788
6258
|
* by value, first series at the baseline. They stand 2px apart for the reason
|
|
5789
|
-
* a stacked bar's do, and the gap comes out of the parts.
|
|
6259
|
+
* a stacked bar's do, and the gap comes out of the parts. It stands on the
|
|
6260
|
+
* zero line (a style property), centred in its slot; the column of a
|
|
6261
|
+
* bucket's negative parts hangs from the same line, first series nearest it.
|
|
5790
6262
|
*/
|
|
5791
6263
|
.crewlet-stacked-columns__column {
|
|
6264
|
+
position: absolute;
|
|
6265
|
+
inset-inline-start: 50%;
|
|
5792
6266
|
display: flex;
|
|
5793
6267
|
flex-direction: column-reverse;
|
|
5794
6268
|
gap: 2px;
|
|
5795
6269
|
width: 63%;
|
|
5796
|
-
max-width: var(--spacing-
|
|
6270
|
+
max-width: var(--spacing-6);
|
|
6271
|
+
transform: translateX(-50%);
|
|
6272
|
+
}
|
|
6273
|
+
|
|
6274
|
+
.crewlet-stacked-columns__column--below {
|
|
6275
|
+
flex-direction: column;
|
|
5797
6276
|
}
|
|
5798
6277
|
|
|
5799
6278
|
.crewlet-stacked-columns__segment {
|
|
@@ -5805,13 +6284,19 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5805
6284
|
background: var(--crewlet-stacked-columns-segment-color, var(--color-data-other));
|
|
5806
6285
|
}
|
|
5807
6286
|
|
|
5808
|
-
/* The VALUE END: the top of the topmost part, rounded at the smallest step
|
|
5809
|
-
|
|
5810
|
-
.
|
|
6287
|
+
/* The VALUE END: the top of the topmost part, rounded at the smallest step
|
|
6288
|
+
(the foot of the lowest one, below zero). The end on the zero line stays
|
|
6289
|
+
square, where every column starts. */
|
|
6290
|
+
.crewlet-stacked-columns__column:not(.crewlet-stacked-columns__column--below) > .crewlet-stacked-columns__segment:last-child {
|
|
5811
6291
|
border-top-left-radius: var(--radius-xs);
|
|
5812
6292
|
border-top-right-radius: var(--radius-xs);
|
|
5813
6293
|
}
|
|
5814
6294
|
|
|
6295
|
+
.crewlet-stacked-columns__column--below > .crewlet-stacked-columns__segment:last-child {
|
|
6296
|
+
border-bottom-left-radius: var(--radius-xs);
|
|
6297
|
+
border-bottom-right-radius: var(--radius-xs);
|
|
6298
|
+
}
|
|
6299
|
+
|
|
5815
6300
|
.crewlet-stacked-columns__scale {
|
|
5816
6301
|
position: relative;
|
|
5817
6302
|
grid-column: 2;
|
|
@@ -5863,7 +6348,9 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5863
6348
|
margin-top: var(--spacing-2);
|
|
5864
6349
|
}
|
|
5865
6350
|
|
|
5866
|
-
/* The middle label stands on the column it names (a style property).
|
|
6351
|
+
/* The middle label stands on the column it names (a style property). On a
|
|
6352
|
+
chart too narrow for three dates it leaves the line to the two ends, which
|
|
6353
|
+
it ran into; the tooltip reads every column's date. */
|
|
5867
6354
|
.crewlet-stacked-columns__middle {
|
|
5868
6355
|
position: absolute;
|
|
5869
6356
|
top: 0;
|
|
@@ -5871,6 +6358,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5871
6358
|
white-space: nowrap;
|
|
5872
6359
|
}
|
|
5873
6360
|
|
|
6361
|
+
.crewlet-stacked-columns__scale > span {
|
|
6362
|
+
white-space: nowrap;
|
|
6363
|
+
}
|
|
6364
|
+
|
|
6365
|
+
@container crewlet-stacked-columns (width < 22rem) {
|
|
6366
|
+
.crewlet-stacked-columns__middle {
|
|
6367
|
+
display: none;
|
|
6368
|
+
}
|
|
6369
|
+
}
|
|
6370
|
+
|
|
5874
6371
|
/* ─── The reading layer: a focusable plot and its tooltip ─────── */
|
|
5875
6372
|
|
|
5876
6373
|
/*
|
|
@@ -5970,13 +6467,18 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5970
6467
|
background: var(--crewlet-chart-tooltip-swatch-color, var(--color-data-other));
|
|
5971
6468
|
}
|
|
5972
6469
|
|
|
6470
|
+
/* A name too long for the box ends in an ellipsis before its value: it ran
|
|
6471
|
+
under the number ("lifec1,397 USD"). The value is never cut. */
|
|
5973
6472
|
.crewlet-chart-tooltip__name {
|
|
5974
6473
|
flex: 1;
|
|
5975
6474
|
min-width: 0;
|
|
6475
|
+
overflow: hidden;
|
|
6476
|
+
text-overflow: ellipsis;
|
|
5976
6477
|
color: var(--color-text-secondary);
|
|
5977
6478
|
}
|
|
5978
6479
|
|
|
5979
6480
|
.crewlet-chart-tooltip__value {
|
|
6481
|
+
flex: none;
|
|
5980
6482
|
color: var(--color-text-primary);
|
|
5981
6483
|
font-variant-numeric: tabular-nums;
|
|
5982
6484
|
}
|
|
@@ -5999,9 +6501,14 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5999
6501
|
width: 100%;
|
|
6000
6502
|
}
|
|
6001
6503
|
|
|
6504
|
+
/*
|
|
6505
|
+
* A cell shares the strip's width with the others, up to a column's width,
|
|
6506
|
+
* so a strip of one day is one mark rather than a slab across the figure.
|
|
6507
|
+
*/
|
|
6002
6508
|
.crewlet-activity-strip__cell {
|
|
6003
6509
|
flex: 1;
|
|
6004
6510
|
min-width: var(--crewlet-activity-strip-cell-min-width, 2px);
|
|
6511
|
+
max-width: var(--crewlet-activity-strip-cell-max-width, var(--spacing-6));
|
|
6005
6512
|
height: var(--crewlet-activity-strip-fill, 10%);
|
|
6006
6513
|
/*
|
|
6007
6514
|
* A quarter of the smallest step. A cell is two pixels wide, so at the step
|
|
@@ -6019,6 +6526,12 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6019
6526
|
background: var(--color-data-1);
|
|
6020
6527
|
}
|
|
6021
6528
|
|
|
6529
|
+
/* The cell being read lifts, as a column being read does, by the hover step
|
|
6530
|
+
behind it rather than by a second colour. */
|
|
6531
|
+
.crewlet-activity-strip__cell.is-read {
|
|
6532
|
+
box-shadow: 0 0 0 2px var(--color-surface-hover);
|
|
6533
|
+
}
|
|
6534
|
+
|
|
6022
6535
|
/* ─── Time series, and the sparkline beside a number ──────────── */
|
|
6023
6536
|
|
|
6024
6537
|
/*
|
|
@@ -6045,14 +6558,16 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6045
6558
|
}
|
|
6046
6559
|
|
|
6047
6560
|
/*
|
|
6048
|
-
* The grid is
|
|
6049
|
-
*
|
|
6050
|
-
*
|
|
6561
|
+
* The grid is a SOLID HAIRLINE in the default border, the ink the column
|
|
6562
|
+
* chart's grid is drawn in. It was dashed, so that three lines would
|
|
6563
|
+
* not read as three series, but a one pixel rule in a border ink beside a two
|
|
6564
|
+
* pixel line in a data hue reads as neither, and a dash is how a chart says
|
|
6565
|
+
* "projection" or "threshold". The lines carry no values of their own: the
|
|
6566
|
+
* peak under the plot is the scale.
|
|
6051
6567
|
*/
|
|
6052
6568
|
.crewlet-chart__grid-line {
|
|
6053
6569
|
stroke: var(--color-border-default);
|
|
6054
6570
|
stroke-width: 1;
|
|
6055
|
-
stroke-dasharray: 2 4;
|
|
6056
6571
|
}
|
|
6057
6572
|
|
|
6058
6573
|
/*
|
|
@@ -6077,7 +6592,34 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6077
6592
|
pointer-events: none;
|
|
6078
6593
|
}
|
|
6079
6594
|
|
|
6080
|
-
/*
|
|
6595
|
+
/*
|
|
6596
|
+
* A POINT: a disc 8px across in its series' hue, cut out of the ground by a
|
|
6597
|
+
* 2px ring of the card (`--crewlet-spark-ground`, as a sparkline's point is),
|
|
6598
|
+
* centred on its value. It stands over the plot rather than in it, so it stays
|
|
6599
|
+
* round at every width, and is drawn for a series of one point and for every
|
|
6600
|
+
* series at the instant being read.
|
|
6601
|
+
*/
|
|
6602
|
+
.crewlet-time-series__dot {
|
|
6603
|
+
position: absolute;
|
|
6604
|
+
width: 8px;
|
|
6605
|
+
height: 8px;
|
|
6606
|
+
border-radius: 50%;
|
|
6607
|
+
background: var(--crewlet-time-series-dot-color, var(--color-data-other));
|
|
6608
|
+
box-shadow: 0 0 0 2px var(--crewlet-spark-ground, var(--color-surface-subtle));
|
|
6609
|
+
transform: translate(-50%, -50%);
|
|
6610
|
+
pointer-events: none;
|
|
6611
|
+
}
|
|
6612
|
+
|
|
6613
|
+
/*
|
|
6614
|
+
* The window's two ends and its peak, under the plot: the scale, as words.
|
|
6615
|
+
* The ends hold their words whole and the range between them gives way, so a
|
|
6616
|
+
* narrow chart never runs one into another; under 18rem the range leaves the
|
|
6617
|
+
* line to the tooltip and the summary, which carry it too.
|
|
6618
|
+
*/
|
|
6619
|
+
.crewlet-time-series {
|
|
6620
|
+
container: crewlet-time-series / inline-size;
|
|
6621
|
+
}
|
|
6622
|
+
|
|
6081
6623
|
.crewlet-time-series__scale {
|
|
6082
6624
|
display: flex;
|
|
6083
6625
|
justify-content: space-between;
|
|
@@ -6088,6 +6630,33 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6088
6630
|
font-variant-numeric: tabular-nums;
|
|
6089
6631
|
}
|
|
6090
6632
|
|
|
6633
|
+
.crewlet-time-series__scale > span {
|
|
6634
|
+
flex: none;
|
|
6635
|
+
white-space: nowrap;
|
|
6636
|
+
}
|
|
6637
|
+
|
|
6638
|
+
/* A window of one instant is drawn at the plot's middle, and so is its date. */
|
|
6639
|
+
.crewlet-time-series__scale--instant {
|
|
6640
|
+
justify-content: center;
|
|
6641
|
+
}
|
|
6642
|
+
|
|
6643
|
+
.crewlet-time-series__scale > .crewlet-time-series__range {
|
|
6644
|
+
flex: 0 1 auto;
|
|
6645
|
+
min-width: 0;
|
|
6646
|
+
overflow: hidden;
|
|
6647
|
+
text-overflow: ellipsis;
|
|
6648
|
+
}
|
|
6649
|
+
|
|
6650
|
+
@container crewlet-time-series (width < 18rem) {
|
|
6651
|
+
.crewlet-time-series__range {
|
|
6652
|
+
display: none;
|
|
6653
|
+
}
|
|
6654
|
+
}
|
|
6655
|
+
|
|
6656
|
+
.crewlet-time-series__legend {
|
|
6657
|
+
margin-top: var(--spacing-2);
|
|
6658
|
+
}
|
|
6659
|
+
|
|
6091
6660
|
/*
|
|
6092
6661
|
* THE SPARKLINE: the plot stretched to the box, and, with `current`, one
|
|
6093
6662
|
* accent point on the last value.
|
|
@@ -6145,7 +6714,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6145
6714
|
}
|
|
6146
6715
|
|
|
6147
6716
|
|
|
6148
|
-
/* Checkbox-
|
|
6717
|
+
/* Checkbox-ALWG3WV2.css */
|
|
6149
6718
|
/*
|
|
6150
6719
|
* Checkbox: a box, its label and its consequence as one target.
|
|
6151
6720
|
*
|
|
@@ -6256,6 +6825,17 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6256
6825
|
.crewlet-checkbox--sm {
|
|
6257
6826
|
--crewlet-checkbox-size: 14px;
|
|
6258
6827
|
|
|
6828
|
+
/*
|
|
6829
|
+
* ITS LINE IS CENTRED IN THE ROW. The row's floor was a minimum height with
|
|
6830
|
+
* the label at its top, so in a form row of small inputs (whose text sits
|
|
6831
|
+
* on their middle) the box and its label stood 5px above the line every
|
|
6832
|
+
* other control's text was on. The floor is made of equal padding round
|
|
6833
|
+
* the first line instead: one line comes out exactly the row's height with
|
|
6834
|
+
* the text on its middle, and a longer label grows the row downwards with
|
|
6835
|
+
* the box still on its first line.
|
|
6836
|
+
*/
|
|
6837
|
+
min-height: 0;
|
|
6838
|
+
padding-block: calc((var(--size-row-sm) - var(--font-line-height-snug) * 1em) / 2);
|
|
6259
6839
|
font-size: var(--font-size-compact);
|
|
6260
6840
|
}
|
|
6261
6841
|
|
|
@@ -6815,7 +7395,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6815
7395
|
}
|
|
6816
7396
|
|
|
6817
7397
|
|
|
6818
|
-
/* CommandPalette-
|
|
7398
|
+
/* CommandPalette-7CFGVBND.css */
|
|
6819
7399
|
/*
|
|
6820
7400
|
* The command palette: a field, an optional row of scopes, one scroller
|
|
6821
7401
|
* holding the lead and the list, and a key legend.
|
|
@@ -6965,7 +7545,11 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
6965
7545
|
background: var(--color-surface-background);
|
|
6966
7546
|
}
|
|
6967
7547
|
|
|
7548
|
+
/* THE LEGEND SPANS THE BAND: a palette's foot has no actions, so its start
|
|
7549
|
+
slot takes the whole width, and a consumer that ends the legend with what
|
|
7550
|
+
the search is doing can push that to the band's end. */
|
|
6968
7551
|
.crewlet-palette .crewlet-modal__footer-start {
|
|
7552
|
+
flex: 1 1 auto;
|
|
6969
7553
|
gap: var(--spacing-4);
|
|
6970
7554
|
font-size: var(--font-size-xs);
|
|
6971
7555
|
}
|
|
@@ -7344,7 +7928,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7344
7928
|
}
|
|
7345
7929
|
|
|
7346
7930
|
|
|
7347
|
-
/* Container-
|
|
7931
|
+
/* Container-34BAKG7B.css */
|
|
7348
7932
|
/*
|
|
7349
7933
|
* Container, the centred content measure. One max-width scale shared by every
|
|
7350
7934
|
* surface, so pages line up regardless of who composed them.
|
|
@@ -7392,9 +7976,11 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7392
7976
|
max-width: none;
|
|
7393
7977
|
}
|
|
7394
7978
|
|
|
7979
|
+
/* A PHONE'S GUTTER IS THE SHELL'S, 16px, the top bar's own inset: a narrower
|
|
7980
|
+
one stood a page's content left of the title over it. */
|
|
7395
7981
|
@media (max-width: 480px) {
|
|
7396
7982
|
.crewlet-container {
|
|
7397
|
-
padding-inline: var(--spacing-
|
|
7983
|
+
padding-inline: var(--spacing-4);
|
|
7398
7984
|
}
|
|
7399
7985
|
}
|
|
7400
7986
|
|
|
@@ -7614,7 +8200,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7614
8200
|
}
|
|
7615
8201
|
|
|
7616
8202
|
|
|
7617
|
-
/* DashboardCover-
|
|
8203
|
+
/* DashboardCover-KYGYMRKW.css */
|
|
7618
8204
|
/*
|
|
7619
8205
|
* DashboardCover: a dashboard's cover at a gallery card's preview size (16:9,
|
|
7620
8206
|
* about 280 by 158 pixels at its smallest). Up to three headline figures, or a
|
|
@@ -7628,23 +8214,27 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7628
8214
|
color: var(--color-text-tertiary);
|
|
7629
8215
|
}
|
|
7630
8216
|
|
|
8217
|
+
/*
|
|
8218
|
+
* THE FIGURES ARE ROWS, the label at the start and the figure (or the dataset
|
|
8219
|
+
* it cites) at the end. Three tiles side by side gave each label a third of a
|
|
8220
|
+
* card's width, so every one was cut to its first word ("Open w…" over "Open
|
|
8221
|
+
* w…"); a row gives the label the card's width, which is what says what the
|
|
8222
|
+
* board measures.
|
|
8223
|
+
*/
|
|
7631
8224
|
.crewlet-dashboard-cover--stats {
|
|
7632
8225
|
display: grid;
|
|
7633
|
-
grid-auto-
|
|
7634
|
-
grid-auto-flow: column;
|
|
7635
|
-
align-items: center;
|
|
8226
|
+
grid-auto-rows: minmax(0, 1fr);
|
|
7636
8227
|
gap: var(--spacing-2);
|
|
7637
8228
|
}
|
|
7638
8229
|
|
|
7639
8230
|
.crewlet-dashboard-cover__stat {
|
|
7640
8231
|
display: flex;
|
|
7641
|
-
|
|
7642
|
-
justify-content:
|
|
7643
|
-
gap: var(--spacing-
|
|
8232
|
+
align-items: center;
|
|
8233
|
+
justify-content: space-between;
|
|
8234
|
+
gap: var(--spacing-3);
|
|
7644
8235
|
min-width: 0;
|
|
7645
|
-
height:
|
|
7646
|
-
|
|
7647
|
-
padding: var(--spacing-2) var(--spacing-3);
|
|
8236
|
+
min-height: 0;
|
|
8237
|
+
padding: 0 var(--spacing-3);
|
|
7648
8238
|
border: 1px solid var(--color-border-default);
|
|
7649
8239
|
border-radius: var(--radius-md);
|
|
7650
8240
|
background: var(--color-surface-elevated);
|
|
@@ -7659,6 +8249,33 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7659
8249
|
white-space: nowrap;
|
|
7660
8250
|
}
|
|
7661
8251
|
|
|
8252
|
+
.crewlet-dashboard-cover__label {
|
|
8253
|
+
flex: 1 1 auto;
|
|
8254
|
+
min-width: 0;
|
|
8255
|
+
color: var(--color-text-secondary);
|
|
8256
|
+
}
|
|
8257
|
+
|
|
8258
|
+
.crewlet-dashboard-cover__value {
|
|
8259
|
+
flex: none;
|
|
8260
|
+
max-width: 50%;
|
|
8261
|
+
overflow: hidden;
|
|
8262
|
+
color: var(--color-text-primary);
|
|
8263
|
+
font-size: var(--font-size-lg);
|
|
8264
|
+
font-variant-numeric: tabular-nums;
|
|
8265
|
+
font-weight: var(--font-weight-semibold);
|
|
8266
|
+
line-height: var(--font-line-height-tight);
|
|
8267
|
+
text-overflow: ellipsis;
|
|
8268
|
+
white-space: nowrap;
|
|
8269
|
+
}
|
|
8270
|
+
|
|
8271
|
+
.crewlet-dashboard-cover__source {
|
|
8272
|
+
overflow: hidden;
|
|
8273
|
+
font-size: var(--font-size-xs);
|
|
8274
|
+
line-height: var(--font-line-height-snug);
|
|
8275
|
+
text-overflow: ellipsis;
|
|
8276
|
+
white-space: nowrap;
|
|
8277
|
+
}
|
|
8278
|
+
|
|
7662
8279
|
.crewlet-dashboard-cover__label {
|
|
7663
8280
|
color: var(--color-text-secondary);
|
|
7664
8281
|
}
|
|
@@ -7675,6 +8292,8 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7675
8292
|
}
|
|
7676
8293
|
|
|
7677
8294
|
.crewlet-dashboard-cover__source {
|
|
8295
|
+
flex: 0 1 auto;
|
|
8296
|
+
max-width: 50%;
|
|
7678
8297
|
color: var(--color-text-tertiary);
|
|
7679
8298
|
}
|
|
7680
8299
|
|
|
@@ -7760,7 +8379,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
7760
8379
|
}
|
|
7761
8380
|
|
|
7762
8381
|
|
|
7763
|
-
/* DataTable-
|
|
8382
|
+
/* DataTable-NL2YWAIA.css */
|
|
7764
8383
|
/* ─────────────────────────────────────────────────────────────────
|
|
7765
8384
|
* Default variant.
|
|
7766
8385
|
*
|
|
@@ -8310,6 +8929,9 @@ body.crewlet-data-table-resizing {
|
|
|
8310
8929
|
*/
|
|
8311
8930
|
--crewlet-data-table-cell-pad-y: calc((var(--spacing-2) + var(--spacing-3)) / 2);
|
|
8312
8931
|
--crewlet-data-table-cell-pad-x: var(--spacing-3);
|
|
8932
|
+
/* The row's height, the list row token unless a host's list keeps another
|
|
8933
|
+
rhythm (and rebinds the cell's vertical inset to fit inside it). */
|
|
8934
|
+
--crewlet-data-table-row-height: var(--size-row-md);
|
|
8313
8935
|
/* The header's own vertical inset. It equals the cell's at this density and
|
|
8314
8936
|
parts from it at comfortable, which is where 0.2.0 drew the two apart. */
|
|
8315
8937
|
--crewlet-data-table-head-pad-y: var(--crewlet-data-table-cell-pad-y);
|
|
@@ -8727,7 +9349,7 @@ body.crewlet-data-table-resizing {
|
|
|
8727
9349
|
.crewlet-data-table--compact .crewlet-data-table__table td {
|
|
8728
9350
|
/* The row token, so a compact table lines up with every other list in a
|
|
8729
9351
|
product and a cell holding one word is as tall as a cell holding a chip. */
|
|
8730
|
-
height: var(--
|
|
9352
|
+
height: var(--crewlet-data-table-row-height);
|
|
8731
9353
|
}
|
|
8732
9354
|
|
|
8733
9355
|
/*
|
|
@@ -11084,88 +11706,199 @@ svg.crewlet-datetime__chevron {
|
|
|
11084
11706
|
}
|
|
11085
11707
|
|
|
11086
11708
|
|
|
11087
|
-
/* DocTabsEditor-
|
|
11709
|
+
/* DocTabsEditor-4M452LNS.css */
|
|
11088
11710
|
/*
|
|
11089
|
-
* DocTabsEditor: a document's tabs as rows
|
|
11090
|
-
*
|
|
11091
|
-
*
|
|
11711
|
+
* DocTabsEditor: a document's tabs as the rows of a list, set in the register
|
|
11712
|
+
* of the outline a reader sees in the same column. A row is its title, the
|
|
11713
|
+
* open one filled as an inbox's open row is; its handle and its menu wait at
|
|
11714
|
+
* its edges and show under the pointer or the keyboard, so six tabs read as
|
|
11715
|
+
* six titles.
|
|
11092
11716
|
*/
|
|
11093
11717
|
|
|
11094
11718
|
.crewlet-doc-tabs-editor {
|
|
11095
11719
|
display: flex;
|
|
11096
11720
|
flex-direction: column;
|
|
11097
|
-
gap: var(--spacing-
|
|
11721
|
+
gap: var(--spacing-1);
|
|
11098
11722
|
min-width: 0;
|
|
11099
11723
|
}
|
|
11100
11724
|
|
|
11725
|
+
/* The list's name in the outline's register, with Add at its end. */
|
|
11726
|
+
.crewlet-doc-tabs-editor__head {
|
|
11727
|
+
display: flex;
|
|
11728
|
+
align-items: center;
|
|
11729
|
+
justify-content: space-between;
|
|
11730
|
+
gap: var(--spacing-2);
|
|
11731
|
+
min-height: var(--size-control-sm);
|
|
11732
|
+
}
|
|
11733
|
+
|
|
11734
|
+
.crewlet-doc-tabs-editor__heading {
|
|
11735
|
+
margin: 0;
|
|
11736
|
+
font-family: var(--font-family-sans);
|
|
11737
|
+
font-size: var(--font-size-xs);
|
|
11738
|
+
font-weight: var(--font-weight-medium);
|
|
11739
|
+
line-height: var(--font-line-height-tight);
|
|
11740
|
+
color: var(--color-text-tertiary);
|
|
11741
|
+
}
|
|
11742
|
+
|
|
11101
11743
|
.crewlet-doc-tabs-editor__list {
|
|
11102
11744
|
display: flex;
|
|
11103
11745
|
flex-direction: column;
|
|
11104
|
-
gap: var(--spacing-1);
|
|
11746
|
+
gap: calc(var(--spacing-1) / 2);
|
|
11105
11747
|
margin: 0;
|
|
11106
11748
|
padding: 0;
|
|
11107
11749
|
list-style: none;
|
|
11108
11750
|
}
|
|
11109
11751
|
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
|
|
11115
|
-
|
|
11116
|
-
|
|
11117
|
-
|
|
11752
|
+
/*
|
|
11753
|
+
* A ROW IS THREE TRACKS that every row shares: the handle, the title and the
|
|
11754
|
+
* menu. The title's column starts at one edge all the way down, and a title
|
|
11755
|
+
* wraps rather than being cut, since a tab cut to fit is one an editor
|
|
11756
|
+
* cannot tell from its neighbour.
|
|
11757
|
+
*/
|
|
11758
|
+
.crewlet-doc-tabs-editor__item {
|
|
11759
|
+
display: grid;
|
|
11760
|
+
grid-template-columns: var(--size-control-sm) minmax(0, 1fr) var(--size-control-sm);
|
|
11761
|
+
align-items: start;
|
|
11762
|
+
gap: calc(var(--spacing-1) / 2);
|
|
11763
|
+
padding: calc(var(--spacing-1) / 2);
|
|
11764
|
+
border-radius: var(--radius-md);
|
|
11765
|
+
transition: background var(--motion-duration-fast) var(--motion-easing-default);
|
|
11766
|
+
}
|
|
11767
|
+
|
|
11768
|
+
.crewlet-doc-tabs-editor__item:hover {
|
|
11769
|
+
background: var(--color-surface-hover);
|
|
11118
11770
|
}
|
|
11119
11771
|
|
|
11120
|
-
.crewlet-doc-tabs-editor__item.is-open
|
|
11121
|
-
|
|
11772
|
+
.crewlet-doc-tabs-editor__item.is-open,
|
|
11773
|
+
.crewlet-doc-tabs-editor__item.is-open:hover {
|
|
11774
|
+
background: var(--color-surface-pressed);
|
|
11775
|
+
}
|
|
11776
|
+
|
|
11777
|
+
/* A row being renamed is its field: the fill would sit around a second box. */
|
|
11778
|
+
.crewlet-doc-tabs-editor__item.is-renaming,
|
|
11779
|
+
.crewlet-doc-tabs-editor__item.is-renaming:hover {
|
|
11780
|
+
background: none;
|
|
11781
|
+
}
|
|
11782
|
+
|
|
11783
|
+
/* The new tab's field stands where its title will, in the title's track. */
|
|
11784
|
+
.crewlet-doc-tabs-editor__item--new > .crewlet-doc-tabs-editor__field {
|
|
11785
|
+
grid-column: 2;
|
|
11122
11786
|
}
|
|
11123
11787
|
|
|
11124
11788
|
.crewlet-doc-tabs-editor__item[data-reorder='dragging'] {
|
|
11125
|
-
|
|
11126
|
-
|
|
11789
|
+
outline: 1px dashed var(--color-border-strong);
|
|
11790
|
+
outline-offset: -1px;
|
|
11127
11791
|
background: transparent;
|
|
11128
11792
|
}
|
|
11793
|
+
|
|
11129
11794
|
.crewlet-doc-tabs-editor__item[data-reorder='dragging'] > * {
|
|
11130
11795
|
opacity: 0.4;
|
|
11131
11796
|
}
|
|
11132
11797
|
|
|
11133
11798
|
.crewlet-doc-tabs-editor__handle {
|
|
11134
|
-
flex-shrink: 0;
|
|
11135
11799
|
cursor: grab;
|
|
11136
11800
|
color: var(--color-text-tertiary);
|
|
11137
11801
|
}
|
|
11802
|
+
|
|
11138
11803
|
.crewlet-doc-tabs-editor__handle:active {
|
|
11139
11804
|
cursor: grabbing;
|
|
11140
11805
|
}
|
|
11141
11806
|
|
|
11142
11807
|
.crewlet-doc-tabs-editor__field {
|
|
11143
11808
|
display: flex;
|
|
11144
|
-
flex: 1 1 12rem;
|
|
11145
11809
|
flex-direction: column;
|
|
11146
|
-
gap: var(--spacing-1);
|
|
11810
|
+
gap: calc(var(--spacing-1) / 2);
|
|
11147
11811
|
min-width: 0;
|
|
11148
11812
|
}
|
|
11149
11813
|
|
|
11814
|
+
/*
|
|
11815
|
+
* The title, which opens the tab: the row's own words, never a second box.
|
|
11816
|
+
* Its words start where the small field's do (its side padding and its 1px
|
|
11817
|
+
* border), so a title does not jump sideways when Rename turns it into one.
|
|
11818
|
+
*/
|
|
11819
|
+
.crewlet-doc-tabs-editor__open {
|
|
11820
|
+
display: block;
|
|
11821
|
+
width: 100%;
|
|
11822
|
+
min-height: var(--size-control-sm);
|
|
11823
|
+
margin: 0;
|
|
11824
|
+
padding: calc((var(--size-control-sm) - var(--font-size-compact) * var(--font-line-height-snug)) / 2)
|
|
11825
|
+
calc(var(--spacing-2) + 1px);
|
|
11826
|
+
border: 0;
|
|
11827
|
+
border-radius: var(--radius-sm);
|
|
11828
|
+
background: none;
|
|
11829
|
+
font-family: var(--font-family-sans);
|
|
11830
|
+
font-size: var(--font-size-compact);
|
|
11831
|
+
font-weight: var(--font-weight-regular);
|
|
11832
|
+
line-height: var(--font-line-height-snug);
|
|
11833
|
+
text-align: start;
|
|
11834
|
+
color: var(--color-text-secondary);
|
|
11835
|
+
overflow-wrap: anywhere;
|
|
11836
|
+
cursor: pointer;
|
|
11837
|
+
}
|
|
11838
|
+
|
|
11839
|
+
.crewlet-doc-tabs-editor__item:hover .crewlet-doc-tabs-editor__open,
|
|
11840
|
+
.crewlet-doc-tabs-editor__open[aria-current='true'] {
|
|
11841
|
+
color: var(--color-text-primary);
|
|
11842
|
+
}
|
|
11843
|
+
|
|
11844
|
+
.crewlet-doc-tabs-editor__open:focus-visible {
|
|
11845
|
+
outline: 2px solid var(--color-focus);
|
|
11846
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
11847
|
+
}
|
|
11848
|
+
|
|
11849
|
+
.crewlet-doc-tabs-editor__open:disabled {
|
|
11850
|
+
cursor: not-allowed;
|
|
11851
|
+
}
|
|
11852
|
+
|
|
11150
11853
|
.crewlet-doc-tabs-editor__problem {
|
|
11854
|
+
padding-inline: calc(var(--spacing-2) + 1px);
|
|
11151
11855
|
color: var(--color-feedback-danger-ink);
|
|
11152
11856
|
font-size: var(--font-size-xs);
|
|
11857
|
+
line-height: var(--font-line-height-snug);
|
|
11858
|
+
}
|
|
11859
|
+
|
|
11860
|
+
/*
|
|
11861
|
+
* THE EDGES WAIT FOR THE POINTER. The handle and the menu are drawn on the
|
|
11862
|
+
* row under the pointer, on the open row, on a row the keyboard is inside and
|
|
11863
|
+
* on a row whose menu is open; elsewhere they keep their place unseen, so
|
|
11864
|
+
* nothing moves when they appear. A device with no hover shows them always,
|
|
11865
|
+
* since there is no pointer to wait for.
|
|
11866
|
+
*/
|
|
11867
|
+
@media (hover: hover) {
|
|
11868
|
+
.crewlet-doc-tabs-editor__handle,
|
|
11869
|
+
.crewlet-doc-tabs-editor__actions {
|
|
11870
|
+
opacity: 0;
|
|
11871
|
+
transition: opacity var(--motion-duration-fast) var(--motion-easing-default);
|
|
11872
|
+
}
|
|
11873
|
+
|
|
11874
|
+
.crewlet-doc-tabs-editor__item:is(:hover, :focus-within, .is-open, :has([aria-expanded='true']))
|
|
11875
|
+
:is(.crewlet-doc-tabs-editor__handle, .crewlet-doc-tabs-editor__actions) {
|
|
11876
|
+
opacity: 1;
|
|
11877
|
+
}
|
|
11153
11878
|
}
|
|
11154
11879
|
|
|
11155
|
-
.crewlet-doc-tabs-
|
|
11880
|
+
.crewlet-doc-tabs-editor__actions {
|
|
11156
11881
|
display: inline-flex;
|
|
11157
|
-
flex-shrink: 0;
|
|
11158
11882
|
}
|
|
11159
11883
|
|
|
11160
|
-
|
|
11161
|
-
|
|
11162
|
-
|
|
11163
|
-
|
|
11164
|
-
|
|
11884
|
+
@media (prefers-reduced-motion: reduce) {
|
|
11885
|
+
.crewlet-doc-tabs-editor__item,
|
|
11886
|
+
.crewlet-doc-tabs-editor__handle,
|
|
11887
|
+
.crewlet-doc-tabs-editor__actions {
|
|
11888
|
+
transition: none;
|
|
11889
|
+
}
|
|
11890
|
+
}
|
|
11891
|
+
|
|
11892
|
+
/* FORCED COLORS drop the open row's fill, so it is outlined instead. */
|
|
11893
|
+
@media (forced-colors: active) {
|
|
11894
|
+
.crewlet-doc-tabs-editor__item.is-open {
|
|
11895
|
+
outline: 1px solid Highlight;
|
|
11896
|
+
outline-offset: -1px;
|
|
11897
|
+
}
|
|
11165
11898
|
}
|
|
11166
11899
|
|
|
11167
11900
|
|
|
11168
|
-
/* Document-
|
|
11901
|
+
/* Document-JUGCSQ4L.css */
|
|
11169
11902
|
/*
|
|
11170
11903
|
* Rendered markdown, set as a document (Document.tsx).
|
|
11171
11904
|
*
|
|
@@ -11240,10 +11973,25 @@ svg.crewlet-datetime__chevron {
|
|
|
11240
11973
|
font-size: var(--font-size-lg);
|
|
11241
11974
|
}
|
|
11242
11975
|
|
|
11243
|
-
|
|
11976
|
+
/*
|
|
11977
|
+
* EVERY LEVEL A STEP OF ITS OWN. A renderer draws a body from `h2` down, so a
|
|
11978
|
+
* page's fourth and fifth levels land on `h5` and `h6`; set at one size with
|
|
11979
|
+
* `h4`, three levels of a document read as one. The two deepest take the
|
|
11980
|
+
* body's own step, and the last is told apart by its ink, as a run-in
|
|
11981
|
+
* heading is in print.
|
|
11982
|
+
*/
|
|
11983
|
+
.crewlet-document h4 {
|
|
11244
11984
|
font-size: var(--font-size-md);
|
|
11245
11985
|
}
|
|
11246
11986
|
|
|
11987
|
+
.crewlet-document :where(h5, h6) {
|
|
11988
|
+
font-size: var(--font-size-sm);
|
|
11989
|
+
}
|
|
11990
|
+
|
|
11991
|
+
.crewlet-document h6 {
|
|
11992
|
+
color: var(--color-text-secondary);
|
|
11993
|
+
}
|
|
11994
|
+
|
|
11247
11995
|
.crewlet-document--sm h1 {
|
|
11248
11996
|
font-size: var(--font-size-lg);
|
|
11249
11997
|
}
|
|
@@ -11286,6 +12034,26 @@ svg.crewlet-datetime__chevron {
|
|
|
11286
12034
|
margin-block-start: var(--spacing-1);
|
|
11287
12035
|
}
|
|
11288
12036
|
|
|
12037
|
+
/*
|
|
12038
|
+
* THE RHYTHM HOLDS INSIDE A BLOCK THAT HOLDS BLOCKS. The sibling rule above
|
|
12039
|
+
* reaches only the body's own children, so a quote's second paragraph and a
|
|
12040
|
+
* list item's second paragraph ran into the first with no gap at all. A quote
|
|
12041
|
+
* is prose and takes the body's gap; a list item is one point and takes the
|
|
12042
|
+
* smaller step, so its paragraphs still read as one item. A task item's
|
|
12043
|
+
* blocks sit in the column beside its box, which is the same item.
|
|
12044
|
+
*/
|
|
12045
|
+
.crewlet-document :where(blockquote, [data-callout-body]) > * + * {
|
|
12046
|
+
margin-block-start: var(--crewlet-document-gap);
|
|
12047
|
+
}
|
|
12048
|
+
|
|
12049
|
+
.crewlet-document :where(li, li > input[type='checkbox'] + *) > :not(input, ul, ol) + :not(ul, ol) {
|
|
12050
|
+
margin-block-start: var(--spacing-2);
|
|
12051
|
+
}
|
|
12052
|
+
|
|
12053
|
+
.crewlet-document li > input[type='checkbox'] + * > :where(ul, ol) {
|
|
12054
|
+
margin-block-start: var(--spacing-1);
|
|
12055
|
+
}
|
|
12056
|
+
|
|
11289
12057
|
.crewlet-document li::marker {
|
|
11290
12058
|
color: var(--color-text-tertiary);
|
|
11291
12059
|
}
|
|
@@ -11455,6 +12223,48 @@ svg.crewlet-datetime__chevron {
|
|
|
11455
12223
|
overflow-wrap: anywhere;
|
|
11456
12224
|
}
|
|
11457
12225
|
|
|
12226
|
+
/*
|
|
12227
|
+
* The title while it is written (`DocumentTitleField`): the title's own type
|
|
12228
|
+
* on no surface of its own, with a line along its foot that answers the
|
|
12229
|
+
* pointer, the focus and a refusal. The line is a border rather than a
|
|
12230
|
+
* shadow, because forced colours keep a border and drop a shadow.
|
|
12231
|
+
*/
|
|
12232
|
+
.crewlet-document-title-field {
|
|
12233
|
+
display: block;
|
|
12234
|
+
width: 100%;
|
|
12235
|
+
min-width: 0;
|
|
12236
|
+
padding: 0 0 var(--spacing-1);
|
|
12237
|
+
border: 0;
|
|
12238
|
+
border-block-end: 2px solid transparent;
|
|
12239
|
+
border-radius: 0;
|
|
12240
|
+
background: none;
|
|
12241
|
+
outline: none;
|
|
12242
|
+
transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
|
|
12243
|
+
}
|
|
12244
|
+
|
|
12245
|
+
.crewlet-document-title-field::placeholder {
|
|
12246
|
+
color: var(--color-text-tertiary);
|
|
12247
|
+
opacity: 1;
|
|
12248
|
+
}
|
|
12249
|
+
|
|
12250
|
+
.crewlet-document-title-field:hover {
|
|
12251
|
+
border-block-end-color: var(--color-border-default);
|
|
12252
|
+
}
|
|
12253
|
+
|
|
12254
|
+
.crewlet-document-title-field:focus-visible {
|
|
12255
|
+
border-block-end-color: var(--color-focus);
|
|
12256
|
+
}
|
|
12257
|
+
|
|
12258
|
+
.crewlet-document-title-field[aria-invalid='true'] {
|
|
12259
|
+
border-block-end-color: var(--color-feedback-danger);
|
|
12260
|
+
}
|
|
12261
|
+
|
|
12262
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12263
|
+
.crewlet-document-title-field {
|
|
12264
|
+
transition: none;
|
|
12265
|
+
}
|
|
12266
|
+
}
|
|
12267
|
+
|
|
11458
12268
|
/*
|
|
11459
12269
|
* A TABLE CELL'S ALIGNMENT, read off `data-align` as well as off a style: an
|
|
11460
12270
|
* editor that may not write a style attribute under a strict policy marks a
|
|
@@ -11522,12 +12332,8 @@ svg.crewlet-datetime__chevron {
|
|
|
11522
12332
|
color: var(--color-text-primary);
|
|
11523
12333
|
}
|
|
11524
12334
|
|
|
11525
|
-
.crewlet-document [data-callout-body] > * + * {
|
|
11526
|
-
margin-block-start: var(--crewlet-document-gap);
|
|
11527
|
-
}
|
|
11528
|
-
|
|
11529
12335
|
|
|
11530
|
-
/* EditingStatus-
|
|
12336
|
+
/* EditingStatus-NNA2CKIL.css */
|
|
11531
12337
|
/*
|
|
11532
12338
|
* The editing status (EditingStatus.tsx): a word and a dot, in the bar's own
|
|
11533
12339
|
* small step, quiet until something is unsaved.
|
|
@@ -11575,10 +12381,12 @@ svg.crewlet-datetime__chevron {
|
|
|
11575
12381
|
/*
|
|
11576
12382
|
* THE WORDS FOLD AND THE DOT STAYS where room is short, hidden from the eye
|
|
11577
12383
|
* and still read by a screen reader, so the status says the same thing to
|
|
11578
|
-
* everyone. On a phone the state folds. On an artifact bar
|
|
11579
|
-
*
|
|
11580
|
-
*
|
|
11581
|
-
*
|
|
12384
|
+
* everyone. On a phone the state folds. On an artifact bar the title has the
|
|
12385
|
+
* row's room first: below 900px (a small laptop's bar beside the rail) the
|
|
12386
|
+
* state folds, since the dot already turns the accent once anything is
|
|
12387
|
+
* unsaved, so a title is not cut to two words to make room for the sentence;
|
|
12388
|
+
* on the narrow arrangement (below 640px, as ArtifactBar.css draws it)
|
|
12389
|
+
* "Editing" folds too, and Cancel and Save beside the dot say an edit is open.
|
|
11582
12390
|
*/
|
|
11583
12391
|
@media (width < 480px) {
|
|
11584
12392
|
.crewlet-editing-status__state {
|
|
@@ -11591,6 +12399,17 @@ svg.crewlet-datetime__chevron {
|
|
|
11591
12399
|
}
|
|
11592
12400
|
}
|
|
11593
12401
|
|
|
12402
|
+
@container crewlet-artifact-bar (width < 900px) {
|
|
12403
|
+
.crewlet-editing-status__state {
|
|
12404
|
+
position: absolute;
|
|
12405
|
+
width: 1px;
|
|
12406
|
+
height: 1px;
|
|
12407
|
+
margin: -1px;
|
|
12408
|
+
overflow: hidden;
|
|
12409
|
+
clip-path: inset(50%);
|
|
12410
|
+
}
|
|
12411
|
+
}
|
|
12412
|
+
|
|
11594
12413
|
@container crewlet-artifact-bar (width < 640px) {
|
|
11595
12414
|
.crewlet-editing-status__label,
|
|
11596
12415
|
.crewlet-editing-status__state {
|
|
@@ -13691,6 +14510,91 @@ svg.crewlet-datetime__chevron {
|
|
|
13691
14510
|
}
|
|
13692
14511
|
|
|
13693
14512
|
|
|
14513
|
+
/* LayersList-NQZEIPZB.css */
|
|
14514
|
+
/*
|
|
14515
|
+
* A canvas's list of layers (LayersList.tsx): a heading that stays, over one
|
|
14516
|
+
* line per entry that scrolls on its own.
|
|
14517
|
+
*/
|
|
14518
|
+
|
|
14519
|
+
.crewlet-layers-list {
|
|
14520
|
+
display: flex;
|
|
14521
|
+
flex-direction: column;
|
|
14522
|
+
gap: var(--spacing-2);
|
|
14523
|
+
min-width: 0;
|
|
14524
|
+
min-height: 0;
|
|
14525
|
+
}
|
|
14526
|
+
|
|
14527
|
+
.crewlet-layers-list__heading {
|
|
14528
|
+
flex: none;
|
|
14529
|
+
color: var(--color-text-tertiary);
|
|
14530
|
+
font-family: var(--font-family-sans);
|
|
14531
|
+
font-size: var(--font-size-compact);
|
|
14532
|
+
line-height: var(--font-line-height-normal);
|
|
14533
|
+
}
|
|
14534
|
+
|
|
14535
|
+
/*
|
|
14536
|
+
* THE ENTRIES HANG INTO THE GUTTER by their own padding and edge, so their
|
|
14537
|
+
* letters stand on the list's edge, in line with the heading above them.
|
|
14538
|
+
*/
|
|
14539
|
+
.crewlet-layers-list__items {
|
|
14540
|
+
flex: 1 1 auto;
|
|
14541
|
+
min-height: 0;
|
|
14542
|
+
margin: 0;
|
|
14543
|
+
margin-inline-start: calc(-1 * (var(--spacing-2) + 2px));
|
|
14544
|
+
padding: 0;
|
|
14545
|
+
overflow-y: auto;
|
|
14546
|
+
list-style: none;
|
|
14547
|
+
}
|
|
14548
|
+
|
|
14549
|
+
/*
|
|
14550
|
+
* The current entry's mark is held on every entry in the resting ink, as the
|
|
14551
|
+
* document outline's is, so nothing moves when the pick does. The radius is
|
|
14552
|
+
* the control step's on the end the mark does not take.
|
|
14553
|
+
*/
|
|
14554
|
+
.crewlet-layers-list__item {
|
|
14555
|
+
display: block;
|
|
14556
|
+
box-sizing: border-box;
|
|
14557
|
+
width: 100%;
|
|
14558
|
+
overflow: hidden;
|
|
14559
|
+
margin: 0;
|
|
14560
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
14561
|
+
border: none;
|
|
14562
|
+
border-inline-start: 2px solid transparent;
|
|
14563
|
+
border-start-start-radius: 0;
|
|
14564
|
+
border-end-start-radius: 0;
|
|
14565
|
+
border-start-end-radius: var(--radius-md);
|
|
14566
|
+
border-end-end-radius: var(--radius-md);
|
|
14567
|
+
background: transparent;
|
|
14568
|
+
color: var(--color-text-secondary);
|
|
14569
|
+
font-family: var(--font-family-sans);
|
|
14570
|
+
font-size: var(--font-size-compact);
|
|
14571
|
+
font-weight: var(--font-weight-regular);
|
|
14572
|
+
line-height: var(--font-line-height-normal);
|
|
14573
|
+
text-align: start;
|
|
14574
|
+
text-overflow: ellipsis;
|
|
14575
|
+
white-space: nowrap;
|
|
14576
|
+
cursor: pointer;
|
|
14577
|
+
}
|
|
14578
|
+
|
|
14579
|
+
.crewlet-layers-list__item:hover {
|
|
14580
|
+
background: var(--color-surface-hover);
|
|
14581
|
+
color: var(--color-text-primary);
|
|
14582
|
+
}
|
|
14583
|
+
|
|
14584
|
+
/* The accent edge every current row in the system takes, in the primary ink.
|
|
14585
|
+
A border, so forced colours keep it. */
|
|
14586
|
+
.crewlet-layers-list__item[aria-current='true'] {
|
|
14587
|
+
border-inline-start-color: var(--color-brand-accent);
|
|
14588
|
+
color: var(--color-text-primary);
|
|
14589
|
+
}
|
|
14590
|
+
|
|
14591
|
+
/* The ring lies inside the entry, where the scroller beside it cannot cut it. */
|
|
14592
|
+
.crewlet-layers-list__item:focus-visible {
|
|
14593
|
+
outline: 2px solid var(--color-focus);
|
|
14594
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
14595
|
+
}
|
|
14596
|
+
|
|
14597
|
+
|
|
13694
14598
|
/* Layout-ZBEGLXAE.css */
|
|
13695
14599
|
/*
|
|
13696
14600
|
* Stack, Inline, Spacer and AutoGrid.
|
|
@@ -15225,7 +16129,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15225
16129
|
}
|
|
15226
16130
|
|
|
15227
16131
|
|
|
15228
|
-
/* Modal-
|
|
16132
|
+
/* Modal-7MWRCWAI.css */
|
|
15229
16133
|
/*
|
|
15230
16134
|
* The modal surface: the veil, the frame, and the three bands inside it.
|
|
15231
16135
|
*
|
|
@@ -15512,6 +16416,36 @@ svg.crewlet-datetime__chevron {
|
|
|
15512
16416
|
border-bottom: 1px solid var(--color-border-default);
|
|
15513
16417
|
}
|
|
15514
16418
|
|
|
16419
|
+
/*
|
|
16420
|
+
* WITH A SUBTITLE, THE HEAD'S CONTROLS SIT ON THE TITLE'S LINE. Centred on
|
|
16421
|
+
* the whole head, the mark, the actions and the close control floated beside
|
|
16422
|
+
* the description, belonging to neither line; top-aligned, they hung from the
|
|
16423
|
+
* head's top edge, a few pixels above the title they belong to. So the row
|
|
16424
|
+
* aligns to the top and each control is centred on the title's first line:
|
|
16425
|
+
* the mark and the actions in a box one title line tall (what is taller
|
|
16426
|
+
* overflows it evenly, into the head's padding), and a lone control by the
|
|
16427
|
+
* margin that puts its centre there. A dialog with no subtitle keeps the
|
|
16428
|
+
* centring above, where the two are the same thing.
|
|
16429
|
+
*
|
|
16430
|
+
* DIALOGS ONLY. A sheet's head is a bar at the shell's top-bar height and
|
|
16431
|
+
* centres what it holds on the bar, as the bar behind it does.
|
|
16432
|
+
*/
|
|
16433
|
+
.crewlet-modal__header--subtitled {
|
|
16434
|
+
--crewlet-modal-title-line: calc(var(--font-size-sm) * var(--font-line-height-tight));
|
|
16435
|
+
align-items: flex-start;
|
|
16436
|
+
}
|
|
16437
|
+
|
|
16438
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__icon,
|
|
16439
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__actions {
|
|
16440
|
+
align-items: center;
|
|
16441
|
+
height: var(--crewlet-modal-title-line);
|
|
16442
|
+
}
|
|
16443
|
+
|
|
16444
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__close,
|
|
16445
|
+
.crewlet-modal__header--subtitled > .crewlet-modal__back {
|
|
16446
|
+
margin-block: calc((var(--crewlet-modal-title-line) - var(--size-control-md)) / 2);
|
|
16447
|
+
}
|
|
16448
|
+
|
|
15515
16449
|
/*
|
|
15516
16450
|
* A SHEET IS COMMITTED FROM ITS HEAD, so its head is the taller band, not the
|
|
15517
16451
|
* tighter one. It stands at the shell's own top-bar height, which is what puts
|
|
@@ -15845,7 +16779,7 @@ svg.crewlet-datetime__chevron {
|
|
|
15845
16779
|
}
|
|
15846
16780
|
|
|
15847
16781
|
|
|
15848
|
-
/* Note-
|
|
16782
|
+
/* Note-WI5MLZOO.css */
|
|
15849
16783
|
/*
|
|
15850
16784
|
* Note: words on a coloured paper. Each hue pairs its fill with its own ink.
|
|
15851
16785
|
*/
|
|
@@ -15908,6 +16842,19 @@ svg.crewlet-datetime__chevron {
|
|
|
15908
16842
|
text-decoration: underline;
|
|
15909
16843
|
text-underline-offset: 2px;
|
|
15910
16844
|
}
|
|
16845
|
+
/*
|
|
16846
|
+
* PARAGRAPHS STAND APART, by the step a note's heading stands from its words.
|
|
16847
|
+
* A host that resets a paragraph's margins (as an application's base sheet
|
|
16848
|
+
* does) ran two paragraphs into what read as one that wrapped early.
|
|
16849
|
+
*/
|
|
16850
|
+
.crewlet-note :is(p, ul, ol) {
|
|
16851
|
+
margin-block: 0;
|
|
16852
|
+
}
|
|
16853
|
+
|
|
16854
|
+
.crewlet-note :is(p, ul, ol) + :is(p, ul, ol) {
|
|
16855
|
+
margin-block-start: var(--spacing-2);
|
|
16856
|
+
}
|
|
16857
|
+
|
|
15911
16858
|
.crewlet-note > :first-child {
|
|
15912
16859
|
margin-top: 0;
|
|
15913
16860
|
}
|
|
@@ -17750,13 +18697,21 @@ svg.crewlet-datetime__chevron {
|
|
|
17750
18697
|
}
|
|
17751
18698
|
|
|
17752
18699
|
|
|
17753
|
-
/* PresenceStack-
|
|
18700
|
+
/* PresenceStack-FJJQVH74.css */
|
|
17754
18701
|
/*
|
|
17755
18702
|
* Who is here (PresenceStack.tsx), on the avatar stack's own geometry: the
|
|
17756
18703
|
* overlap and the counted chip are the stack's. What this adds is the ring in
|
|
17757
18704
|
* each present collaborator's hue, outside the cut-out, and the idle fade.
|
|
17758
18705
|
*/
|
|
17759
18706
|
|
|
18707
|
+
/* HOW FAR THE RING REACHES past each badge: the cut-out, then the hue. The
|
|
18708
|
+
ring is drawn outside the stack's own box, so a container that places the
|
|
18709
|
+
stack flush to an edge (or clips) keeps this much clear round it. */
|
|
18710
|
+
.crewlet-presence-stack {
|
|
18711
|
+
--crewlet-presence-stack-cutout: 2px;
|
|
18712
|
+
--crewlet-presence-stack-reach: calc(var(--crewlet-presence-stack-cutout) * 2);
|
|
18713
|
+
}
|
|
18714
|
+
|
|
17760
18715
|
/* The wrapper (a span, or a button when badges select) carries no edge of its
|
|
17761
18716
|
own: the cut-out and the hue ring are drawn on the badge inside it, which
|
|
17762
18717
|
has the badge's own outline to follow. */
|
|
@@ -17789,15 +18744,15 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17789
18744
|
}
|
|
17790
18745
|
|
|
17791
18746
|
.crewlet-presence-stack .crewlet-presence-stack__badge {
|
|
17792
|
-
box-shadow: 0 0 0
|
|
18747
|
+
box-shadow: 0 0 0 var(--crewlet-presence-stack-cutout) var(--crewlet-avatar-stack-ground);
|
|
17793
18748
|
}
|
|
17794
18749
|
|
|
17795
18750
|
/* The hue ring sits outside the cut-out, so it reads as a ring round the
|
|
17796
18751
|
badge rather than a stroke on it. */
|
|
17797
18752
|
.crewlet-presence-stack .crewlet-presence-stack__badge--present {
|
|
17798
18753
|
box-shadow:
|
|
17799
|
-
0 0 0
|
|
17800
|
-
0 0 0
|
|
18754
|
+
0 0 0 var(--crewlet-presence-stack-cutout) var(--crewlet-avatar-stack-ground),
|
|
18755
|
+
0 0 0 var(--crewlet-presence-stack-reach) var(--crewlet-presence-hue);
|
|
17801
18756
|
}
|
|
17802
18757
|
|
|
17803
18758
|
.crewlet-presence-stack .crewlet-presence-stack__badge--idle {
|
|
@@ -17812,48 +18767,58 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17812
18767
|
}
|
|
17813
18768
|
|
|
17814
18769
|
|
|
17815
|
-
/* PresenterView-
|
|
18770
|
+
/* PresenterView-T3EXIQ5S.css */
|
|
17816
18771
|
/*
|
|
17817
18772
|
* PresenterView: the presenter's own screen beside the room's.
|
|
17818
18773
|
*
|
|
17819
|
-
* The
|
|
17820
|
-
*
|
|
18774
|
+
* The room's slide is as large as fits the column with its controls right
|
|
18775
|
+
* under it, drawn as the slide itself rather than letterboxed in a well. The
|
|
18776
|
+
* notes take the space a glance needs: a large, readable size and their own
|
|
18777
|
+
* scroll, so a long note never pushes the next slide or the timer away.
|
|
17821
18778
|
*/
|
|
17822
18779
|
|
|
17823
18780
|
.crewlet-presenter {
|
|
17824
18781
|
display: grid;
|
|
17825
18782
|
grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr);
|
|
17826
|
-
gap: var(--spacing-
|
|
18783
|
+
gap: var(--spacing-5);
|
|
17827
18784
|
height: 100%;
|
|
17828
18785
|
min-height: 0;
|
|
17829
18786
|
padding: var(--spacing-4);
|
|
18787
|
+
box-sizing: border-box;
|
|
17830
18788
|
background: var(--color-surface-background);
|
|
17831
18789
|
color: var(--color-text-primary);
|
|
17832
18790
|
}
|
|
17833
18791
|
|
|
18792
|
+
/* THE SLIDE AS LARGE AS FITS, measured against the room under its caption
|
|
18793
|
+
(a size container), less the controls under it: the largest box of the
|
|
18794
|
+
slide's shape that fits both ways, so nothing is letterboxed and the
|
|
18795
|
+
controls sit on the slide's foot wherever that is. */
|
|
17834
18796
|
.crewlet-presenter__main {
|
|
17835
18797
|
display: flex;
|
|
17836
18798
|
flex-direction: column;
|
|
17837
|
-
gap: var(--spacing-
|
|
18799
|
+
gap: var(--spacing-2);
|
|
18800
|
+
min-width: 0;
|
|
17838
18801
|
min-height: 0;
|
|
18802
|
+
margin: 0;
|
|
17839
18803
|
}
|
|
17840
18804
|
|
|
17841
|
-
.crewlet-
|
|
18805
|
+
.crewlet-presenter__screen {
|
|
18806
|
+
container-type: size;
|
|
17842
18807
|
flex: 1;
|
|
17843
|
-
min-height: 0;
|
|
17844
|
-
border-radius: var(--radius-md);
|
|
17845
|
-
}
|
|
17846
|
-
|
|
17847
|
-
.crewlet-presenter__controls {
|
|
17848
18808
|
display: flex;
|
|
18809
|
+
flex-direction: column;
|
|
17849
18810
|
align-items: center;
|
|
17850
|
-
justify-content: center;
|
|
17851
18811
|
gap: var(--spacing-3);
|
|
18812
|
+
min-height: 0;
|
|
17852
18813
|
}
|
|
17853
18814
|
|
|
17854
|
-
.crewlet-
|
|
17855
|
-
|
|
17856
|
-
|
|
18815
|
+
.crewlet-presenter__screen > .crewlet-slide-stage {
|
|
18816
|
+
flex: none;
|
|
18817
|
+
width: min(
|
|
18818
|
+
100cqw,
|
|
18819
|
+
(100cqh - var(--size-control-sm) - var(--spacing-3)) * var(--crewlet-presenter-ratio, 1.7778)
|
|
18820
|
+
);
|
|
18821
|
+
border-radius: var(--radius-md);
|
|
17857
18822
|
}
|
|
17858
18823
|
|
|
17859
18824
|
.crewlet-presenter__side {
|
|
@@ -17863,17 +18828,31 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17863
18828
|
min-height: 0;
|
|
17864
18829
|
}
|
|
17865
18830
|
|
|
17866
|
-
.crewlet-presenter__next
|
|
17867
|
-
|
|
17868
|
-
|
|
18831
|
+
.crewlet-presenter__next,
|
|
18832
|
+
.crewlet-presenter__notes {
|
|
18833
|
+
display: flex;
|
|
18834
|
+
flex-direction: column;
|
|
18835
|
+
gap: var(--spacing-2);
|
|
18836
|
+
min-height: 0;
|
|
18837
|
+
margin: 0;
|
|
18838
|
+
}
|
|
18839
|
+
|
|
18840
|
+
.crewlet-presenter__caption {
|
|
18841
|
+
margin: 0;
|
|
17869
18842
|
}
|
|
17870
18843
|
|
|
18844
|
+
/* THE END HOLDS THE NEXT SLIDE'S PLACE at its shape, so the timer and the
|
|
18845
|
+
notes under it stay where they were on the last slide. */
|
|
17871
18846
|
.crewlet-presenter__end {
|
|
18847
|
+
display: flex;
|
|
18848
|
+
align-items: center;
|
|
18849
|
+
justify-content: center;
|
|
18850
|
+
aspect-ratio: var(--crewlet-presenter-ratio, 1.7778);
|
|
17872
18851
|
margin: 0;
|
|
17873
|
-
|
|
17874
|
-
border: 1px dashed var(--color-border-default);
|
|
18852
|
+
border: 1px dashed var(--color-border-strong);
|
|
17875
18853
|
border-radius: var(--radius-sm);
|
|
17876
18854
|
color: var(--color-text-tertiary);
|
|
18855
|
+
font-size: var(--font-size-sm);
|
|
17877
18856
|
text-align: center;
|
|
17878
18857
|
}
|
|
17879
18858
|
|
|
@@ -17892,9 +18871,13 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17892
18871
|
|
|
17893
18872
|
.crewlet-presenter__notes {
|
|
17894
18873
|
flex: 1;
|
|
18874
|
+
}
|
|
18875
|
+
|
|
18876
|
+
.crewlet-presenter__notes-body {
|
|
18877
|
+
flex: 1;
|
|
17895
18878
|
min-height: 0;
|
|
17896
18879
|
overflow: auto;
|
|
17897
|
-
padding: var(--spacing-3);
|
|
18880
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
17898
18881
|
border-radius: var(--radius-md);
|
|
17899
18882
|
background: var(--color-surface-subtle);
|
|
17900
18883
|
font-size: var(--font-size-lg);
|
|
@@ -17902,7 +18885,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17902
18885
|
white-space: pre-wrap;
|
|
17903
18886
|
}
|
|
17904
18887
|
|
|
17905
|
-
.crewlet-presenter__notes p {
|
|
18888
|
+
.crewlet-presenter__notes-body p {
|
|
17906
18889
|
margin: 0;
|
|
17907
18890
|
}
|
|
17908
18891
|
|
|
@@ -17910,11 +18893,27 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
17910
18893
|
color: var(--color-text-tertiary);
|
|
17911
18894
|
}
|
|
17912
18895
|
|
|
18896
|
+
/* ONE COLUMN on a narrow screen: the page scrolls, so the slide is as wide as
|
|
18897
|
+
the column and the notes as tall as they are. */
|
|
17913
18898
|
@media (max-width: 48rem) {
|
|
17914
18899
|
.crewlet-presenter {
|
|
17915
18900
|
grid-template-columns: minmax(0, 1fr);
|
|
17916
18901
|
height: auto;
|
|
17917
18902
|
}
|
|
18903
|
+
|
|
18904
|
+
.crewlet-presenter__screen {
|
|
18905
|
+
container-type: normal;
|
|
18906
|
+
flex: none;
|
|
18907
|
+
}
|
|
18908
|
+
|
|
18909
|
+
.crewlet-presenter__screen > .crewlet-slide-stage {
|
|
18910
|
+
width: 100%;
|
|
18911
|
+
}
|
|
18912
|
+
|
|
18913
|
+
.crewlet-presenter__notes-body {
|
|
18914
|
+
flex: none;
|
|
18915
|
+
overflow: visible;
|
|
18916
|
+
}
|
|
17918
18917
|
}
|
|
17919
18918
|
|
|
17920
18919
|
|
|
@@ -19002,15 +20001,11 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19002
20001
|
}
|
|
19003
20002
|
|
|
19004
20003
|
|
|
19005
|
-
/* SandboxedFrame-
|
|
20004
|
+
/* SandboxedFrame-P5NASXB7.css */
|
|
19006
20005
|
/*
|
|
19007
20006
|
* The frame fills the box it is given. The page around it does not scroll
|
|
19008
20007
|
* round the artifact: the artifact scrolls inside its own document, which is
|
|
19009
20008
|
* what a viewer body that holds one wants.
|
|
19010
|
-
*
|
|
19011
|
-
* The region takes focus when the frame hands it back, and keeps the
|
|
19012
|
-
* document's own focus treatment then: a reader who just left a page by
|
|
19013
|
-
* keyboard needs to see where they landed.
|
|
19014
20009
|
*/
|
|
19015
20010
|
|
|
19016
20011
|
.crewlet-sandboxed-frame {
|
|
@@ -19034,6 +20029,10 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19034
20029
|
background: transparent;
|
|
19035
20030
|
}
|
|
19036
20031
|
|
|
20032
|
+
/* THE PLACEHOLDER AND THE END STATES SIT AT ONE INSET, the frame's margin,
|
|
20033
|
+
so a reader who watches a page load and then fail sees the callout take
|
|
20034
|
+
the placeholder's place rather than jump beside it. */
|
|
20035
|
+
|
|
19037
20036
|
/* Kept out of sight while it starts, so a document that has not painted in
|
|
19038
20037
|
the reader's palette yet is never what they see. It still loads. */
|
|
19039
20038
|
.crewlet-sandboxed-frame[data-state='loading'] .crewlet-sandboxed-frame__frame {
|
|
@@ -19044,7 +20043,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19044
20043
|
position: absolute;
|
|
19045
20044
|
inset: 0;
|
|
19046
20045
|
display: flex;
|
|
19047
|
-
padding: var(--spacing-
|
|
20046
|
+
padding: var(--spacing-4);
|
|
19048
20047
|
}
|
|
19049
20048
|
|
|
19050
20049
|
.crewlet-sandboxed-frame__end {
|
|
@@ -19054,6 +20053,28 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19054
20053
|
padding: var(--spacing-4);
|
|
19055
20054
|
}
|
|
19056
20055
|
|
|
20056
|
+
/* THE REGION TAKES FOCUS WHEN THE FRAME HANDS IT BACK, and a reader who just
|
|
20057
|
+
left a page by keyboard needs to see where they landed. The document's own
|
|
20058
|
+
ring sits outside the box, where a frame filling a clipping card loses it,
|
|
20059
|
+
so the region draws its ring inside its edge, on a layer above the frame. */
|
|
20060
|
+
.crewlet-sandboxed-frame:focus-visible {
|
|
20061
|
+
/* Transparent rather than none: forced-colors mode paints a transparent
|
|
20062
|
+
outline in the system ink, so the region's edge is never left bare. */
|
|
20063
|
+
outline: 2px solid transparent;
|
|
20064
|
+
}
|
|
20065
|
+
|
|
20066
|
+
.crewlet-sandboxed-frame:focus-visible::after {
|
|
20067
|
+
content: '';
|
|
20068
|
+
position: absolute;
|
|
20069
|
+
inset: 0;
|
|
20070
|
+
z-index: 1;
|
|
20071
|
+
border-radius: inherit;
|
|
20072
|
+
/* An outline, never a shadow: forced-colors mode keeps only outlines. */
|
|
20073
|
+
outline: 2px solid var(--color-focus);
|
|
20074
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
20075
|
+
pointer-events: none;
|
|
20076
|
+
}
|
|
20077
|
+
|
|
19057
20078
|
|
|
19058
20079
|
/* SearchTrigger-KIZLWBEH.css */
|
|
19059
20080
|
/*
|
|
@@ -19173,7 +20194,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19173
20194
|
}
|
|
19174
20195
|
|
|
19175
20196
|
|
|
19176
|
-
/* Section-
|
|
20197
|
+
/* Section-O5AHGSOG.css */
|
|
19177
20198
|
/*
|
|
19178
20199
|
* Section, the vertical rhythm band. One spacing scale keeps the cadence
|
|
19179
20200
|
* between page sections consistent, and collapses on small viewports.
|
|
@@ -19232,7 +20253,11 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19232
20253
|
.crewlet-section__title {
|
|
19233
20254
|
margin: 0;
|
|
19234
20255
|
font-family: var(--font-family-display);
|
|
19235
|
-
|
|
20256
|
+
/* THE REGISTER IS THE CONTAINER'S TO SET. A screen's band heads at the large
|
|
20257
|
+
step; a side panel, whose own title is the small step, sets
|
|
20258
|
+
`--crewlet-section-title-size` so the sections inside it never outrank the
|
|
20259
|
+
heading they sit under. */
|
|
20260
|
+
font-size: var(--crewlet-section-title-size, var(--font-size-lg));
|
|
19236
20261
|
font-weight: var(--font-weight-semibold);
|
|
19237
20262
|
line-height: var(--font-line-height-normal);
|
|
19238
20263
|
letter-spacing: var(--font-letter-spacing-tight);
|
|
@@ -19291,15 +20316,34 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
19291
20316
|
padding-block: var(--spacing-10);
|
|
19292
20317
|
}
|
|
19293
20318
|
|
|
19294
|
-
/*
|
|
19295
|
-
* Narrow: the sentence moves under the heading rather than competing with it
|
|
19296
|
-
* for a line that has room for neither.
|
|
19297
|
-
*/
|
|
19298
20319
|
.crewlet-section__header {
|
|
19299
20320
|
flex-wrap: wrap;
|
|
20321
|
+
row-gap: var(--spacing-1);
|
|
20322
|
+
}
|
|
20323
|
+
|
|
20324
|
+
.crewlet-section__description {
|
|
20325
|
+
order: 1;
|
|
20326
|
+
white-space: normal;
|
|
20327
|
+
flex-basis: 100%;
|
|
20328
|
+
}
|
|
20329
|
+
}
|
|
20330
|
+
|
|
20331
|
+
/*
|
|
20332
|
+
* NARROW: the sentence moves under the heading rather than competing with it
|
|
20333
|
+
* for a line that has room for neither, and the actions stay on the heading's
|
|
20334
|
+
* line. Measured on the column the section sits in where it sits in a size
|
|
20335
|
+
* container (a side panel, a screen's content column), since a panel beside a
|
|
20336
|
+
* wide window is as narrow as a phone; the window's width above is the answer
|
|
20337
|
+
* where there is no container to ask.
|
|
20338
|
+
*/
|
|
20339
|
+
@container (width < 36rem) {
|
|
20340
|
+
.crewlet-section__header {
|
|
20341
|
+
flex-wrap: wrap;
|
|
20342
|
+
row-gap: var(--spacing-1);
|
|
19300
20343
|
}
|
|
19301
20344
|
|
|
19302
20345
|
.crewlet-section__description {
|
|
20346
|
+
order: 1;
|
|
19303
20347
|
white-space: normal;
|
|
19304
20348
|
flex-basis: 100%;
|
|
19305
20349
|
}
|
|
@@ -20049,7 +21093,7 @@ svg.crewlet-select__chevron {
|
|
|
20049
21093
|
}
|
|
20050
21094
|
|
|
20051
21095
|
|
|
20052
|
-
/* ShareDialog-
|
|
21096
|
+
/* ShareDialog-4QDCBWMH.css */
|
|
20053
21097
|
/*
|
|
20054
21098
|
* Three blocks under the title: who to add and at what role, who has access,
|
|
20055
21099
|
* and what the whole company may do. Each row of the audience is the badge,
|
|
@@ -20068,6 +21112,10 @@ svg.crewlet-select__chevron {
|
|
|
20068
21112
|
display: flex;
|
|
20069
21113
|
flex-direction: column;
|
|
20070
21114
|
gap: var(--spacing-2);
|
|
21115
|
+
/* A BLOCK'S WORTH OF ROOM ABOVE EACH HEADING, over the body's own gap: at
|
|
21116
|
+
the gap alone "Who has access" sat as close under the add field as the
|
|
21117
|
+
role select beside it, and read as that field's label. */
|
|
21118
|
+
padding-block-start: var(--spacing-2);
|
|
20071
21119
|
}
|
|
20072
21120
|
|
|
20073
21121
|
.crewlet-share-dialog__heading {
|
|
@@ -20139,11 +21187,19 @@ svg.crewlet-select__chevron {
|
|
|
20139
21187
|
}
|
|
20140
21188
|
|
|
20141
21189
|
.crewlet-share-dialog__note,
|
|
21190
|
+
.crewlet-share-dialog__invalid,
|
|
20142
21191
|
.crewlet-share-dialog__refusal {
|
|
20143
21192
|
grid-column: 2 / -1;
|
|
20144
21193
|
font-size: var(--font-size-xs);
|
|
20145
21194
|
}
|
|
20146
21195
|
|
|
21196
|
+
/* A SHARE THAT REACHES NOBODY says why in the warning ink, the state a person
|
|
21197
|
+
is asked to act on, and its "No access" stands in the quiet ink a role
|
|
21198
|
+
would. */
|
|
21199
|
+
.crewlet-share-dialog__invalid {
|
|
21200
|
+
color: var(--color-feedback-warning-ink);
|
|
21201
|
+
}
|
|
21202
|
+
|
|
20147
21203
|
.crewlet-share-dialog__note {
|
|
20148
21204
|
color: var(--color-text-tertiary);
|
|
20149
21205
|
}
|
|
@@ -20198,7 +21254,7 @@ svg.crewlet-select__chevron {
|
|
|
20198
21254
|
}
|
|
20199
21255
|
|
|
20200
21256
|
|
|
20201
|
-
/* SheetGrid-
|
|
21257
|
+
/* SheetGrid-AKPUCK67.css */
|
|
20202
21258
|
/*
|
|
20203
21259
|
* The editable sheet (SheetGrid.tsx) and its cells (cells.tsx).
|
|
20204
21260
|
*
|
|
@@ -20214,6 +21270,8 @@ svg.crewlet-select__chevron {
|
|
|
20214
21270
|
|
|
20215
21271
|
.crewlet-sheet-grid {
|
|
20216
21272
|
--crewlet-sheet-row-height: var(--size-sheet-row);
|
|
21273
|
+
/* The history control: a target-sized button, which its room in the cell is sized from. */
|
|
21274
|
+
--crewlet-sheet-history-size: var(--size-target-min);
|
|
20217
21275
|
position: relative;
|
|
20218
21276
|
display: flex;
|
|
20219
21277
|
flex-direction: column;
|
|
@@ -20221,7 +21279,33 @@ svg.crewlet-select__chevron {
|
|
|
20221
21279
|
min-height: 0;
|
|
20222
21280
|
color: var(--color-text-primary);
|
|
20223
21281
|
font-family: var(--font-family-sans);
|
|
20224
|
-
|
|
21282
|
+
/* Values at the compact step, a grid's own register: the headers stay a
|
|
21283
|
+
step under them, in sentence case. */
|
|
21284
|
+
font-size: var(--font-size-compact);
|
|
21285
|
+
}
|
|
21286
|
+
|
|
21287
|
+
/* THE MEASURING ROW: each sized column's header and sampled values, drawn by
|
|
21288
|
+
the real header and cell rules at their natural width, out of sight and out
|
|
21289
|
+
of reach. The grid reads each one's widest part as the column's width. */
|
|
21290
|
+
.crewlet-sheet-grid__measure {
|
|
21291
|
+
position: absolute;
|
|
21292
|
+
inset-block-start: 0;
|
|
21293
|
+
inset-inline-start: 0;
|
|
21294
|
+
width: 0;
|
|
21295
|
+
height: 0;
|
|
21296
|
+
overflow: hidden;
|
|
21297
|
+
visibility: hidden;
|
|
21298
|
+
pointer-events: none;
|
|
21299
|
+
}
|
|
21300
|
+
|
|
21301
|
+
.crewlet-sheet-grid__measure > div {
|
|
21302
|
+
display: flex;
|
|
21303
|
+
flex-direction: column;
|
|
21304
|
+
width: max-content;
|
|
21305
|
+
}
|
|
21306
|
+
|
|
21307
|
+
.crewlet-sheet-grid__measure :is(.crewlet-sheet-grid__header, .crewlet-sheet-grid__cell) {
|
|
21308
|
+
width: max-content;
|
|
20225
21309
|
}
|
|
20226
21310
|
|
|
20227
21311
|
/* Measured by the component: the resolved row height at the current density. */
|
|
@@ -20250,9 +21334,16 @@ svg.crewlet-select__chevron {
|
|
|
20250
21334
|
}
|
|
20251
21335
|
|
|
20252
21336
|
/* AS TALL AS ITS ROWS (fit="content"): the component writes the height, the
|
|
20253
|
-
page may cap it, and the grid never grows past the height it was given.
|
|
21337
|
+
page may cap it, and the grid never grows past the height it was given.
|
|
21338
|
+
IN A BOUNDED COLUMN IT GIVES WAY: the scroller shrinks to the room its
|
|
21339
|
+
container has left under whatever stands above it (a bar that wraps on a
|
|
21340
|
+
phone included), so the foot lands on the container's edge rather than
|
|
21341
|
+
on a guess of how tall the rest is. It never shrinks below the floor the
|
|
21342
|
+
page sets (--crewlet-sheet-min-height), and never below its own rows'
|
|
21343
|
+
height, so a short sheet is not stretched into an empty slab. */
|
|
20254
21344
|
.crewlet-sheet-grid--fit-content > .crewlet-sheet-grid__scroller {
|
|
20255
|
-
flex:
|
|
21345
|
+
flex: 0 1 auto;
|
|
21346
|
+
min-height: min(var(--crewlet-sheet-min-height, 0px), var(--crewlet-sheet-content-height, 0px));
|
|
20256
21347
|
max-height: var(--crewlet-sheet-max-height, 70vh);
|
|
20257
21348
|
}
|
|
20258
21349
|
|
|
@@ -20338,6 +21429,24 @@ svg.crewlet-select__chevron {
|
|
|
20338
21429
|
margin-inline-start: auto;
|
|
20339
21430
|
}
|
|
20340
21431
|
|
|
21432
|
+
/* A HEADER SITS ON ITS COLUMN'S EDGE: a number's and a rating's name end
|
|
21433
|
+
where their values end, the sort mark on the inner side, and a checkbox's
|
|
21434
|
+
name is centred over its boxes. A name on the leading edge over values on
|
|
21435
|
+
the trailing one read as belonging to the column before. */
|
|
21436
|
+
.crewlet-sheet-grid__header--number,
|
|
21437
|
+
.crewlet-sheet-grid__header--rating {
|
|
21438
|
+
flex-direction: row-reverse;
|
|
21439
|
+
}
|
|
21440
|
+
|
|
21441
|
+
.crewlet-sheet-grid__header--number > .crewlet-sheet-grid__header-presence,
|
|
21442
|
+
.crewlet-sheet-grid__header--rating > .crewlet-sheet-grid__header-presence {
|
|
21443
|
+
margin-inline: 0 auto;
|
|
21444
|
+
}
|
|
21445
|
+
|
|
21446
|
+
.crewlet-sheet-grid__header--checkbox {
|
|
21447
|
+
justify-content: center;
|
|
21448
|
+
}
|
|
21449
|
+
|
|
20341
21450
|
.crewlet-sheet-grid .crewlet-sheet-grid__header-badge {
|
|
20342
21451
|
box-shadow: 0 0 0 2px var(--crewlet-presence-hue);
|
|
20343
21452
|
}
|
|
@@ -20358,6 +21467,13 @@ svg.crewlet-select__chevron {
|
|
|
20358
21467
|
transform: translateY(-50%);
|
|
20359
21468
|
}
|
|
20360
21469
|
|
|
21470
|
+
/* The active row's actions and the active cell's history are the reader's
|
|
21471
|
+
tools while they are in the grid, not marks on a sheet nobody has entered. */
|
|
21472
|
+
.crewlet-sheet-grid__grid:not(:focus-within) .crewlet-sheet-grid__row-actions--active-row,
|
|
21473
|
+
.crewlet-sheet-grid__grid:not(:focus-within) .crewlet-sheet-grid__cell--history:not(:hover) > .crewlet-sheet-grid__history {
|
|
21474
|
+
visibility: hidden;
|
|
21475
|
+
}
|
|
21476
|
+
|
|
20361
21477
|
/* The bar at a row's leading edge while somebody has it selected. */
|
|
20362
21478
|
.crewlet-sheet-grid__rownum--present::before {
|
|
20363
21479
|
position: absolute;
|
|
@@ -20393,10 +21509,21 @@ svg.crewlet-select__chevron {
|
|
|
20393
21509
|
justify-content: center;
|
|
20394
21510
|
}
|
|
20395
21511
|
|
|
20396
|
-
|
|
21512
|
+
/* THE SELECTION IS TINTED WHILE THE READER IS IN THE GRID, or while it
|
|
21513
|
+
spans more than one cell. A grid nobody has entered still holds its first
|
|
21514
|
+
cell as the active one (the keys start there), and tinting it drew a stray
|
|
21515
|
+
highlight on every sheet as it opened. */
|
|
21516
|
+
.crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__cell--selected {
|
|
20397
21517
|
background: var(--color-brand-accent-soft);
|
|
20398
21518
|
}
|
|
20399
21519
|
|
|
21520
|
+
/* THE FROZEN EDGE once the grid is scrolled sideways: the columns that stay
|
|
21521
|
+
(or the row numbers, where none do) end on the strong hairline, so the
|
|
21522
|
+
values passing under them read as scrolled rather than cut. */
|
|
21523
|
+
.crewlet-sheet-grid__scroller--across .crewlet-sheet-grid__frozen-edge {
|
|
21524
|
+
border-inline-end-color: var(--color-border-strong);
|
|
21525
|
+
}
|
|
21526
|
+
|
|
20400
21527
|
.crewlet-sheet-grid__cell:focus-visible,
|
|
20401
21528
|
.crewlet-sheet-grid__header:focus-visible {
|
|
20402
21529
|
outline: 2px solid var(--color-focus);
|
|
@@ -20464,6 +21591,31 @@ svg.crewlet-select__chevron {
|
|
|
20464
21591
|
white-space: normal;
|
|
20465
21592
|
}
|
|
20466
21593
|
|
|
21594
|
+
/* THE HISTORY CONTROL HAS ITS OWN ROOM while it shows, so a value ends, or
|
|
21595
|
+
ellipsises, before it rather than running under it. It sits at the edge
|
|
21596
|
+
the value does not start from: the trailing edge of a value drawn from the
|
|
21597
|
+
leading one, the leading edge of a number or a rating (drawn on the
|
|
21598
|
+
trailing one), so neither moves when its cell becomes active. A checkbox,
|
|
21599
|
+
centred in a column wider than it, needs no room made. */
|
|
21600
|
+
.crewlet-sheet-grid__grid:focus-within .crewlet-sheet-grid__cell--history,
|
|
21601
|
+
.crewlet-sheet-grid__cell--history:hover {
|
|
21602
|
+
padding-inline-end: calc(var(--spacing-1) * 2 + var(--crewlet-sheet-history-size));
|
|
21603
|
+
}
|
|
21604
|
+
|
|
21605
|
+
.crewlet-sheet-grid__grid:focus-within :is(.crewlet-sheet-grid__cell--number, .crewlet-sheet-grid__cell--rating).crewlet-sheet-grid__cell--history,
|
|
21606
|
+
:is(.crewlet-sheet-grid__cell--number, .crewlet-sheet-grid__cell--rating).crewlet-sheet-grid__cell--history:hover {
|
|
21607
|
+
padding-inline: calc(var(--spacing-1) * 2 + var(--crewlet-sheet-history-size)) var(--spacing-2);
|
|
21608
|
+
}
|
|
21609
|
+
|
|
21610
|
+
.crewlet-sheet-grid__grid:focus-within .crewlet-sheet-grid__cell--checkbox.crewlet-sheet-grid__cell--history,
|
|
21611
|
+
.crewlet-sheet-grid__cell--checkbox.crewlet-sheet-grid__cell--history:hover {
|
|
21612
|
+
padding-inline-end: var(--spacing-2);
|
|
21613
|
+
}
|
|
21614
|
+
|
|
21615
|
+
:is(.crewlet-sheet-grid__cell--number, .crewlet-sheet-grid__cell--rating) > .crewlet-sheet-grid__history {
|
|
21616
|
+
inset-inline: var(--spacing-1) auto;
|
|
21617
|
+
}
|
|
21618
|
+
|
|
20467
21619
|
.crewlet-sheet-grid__history {
|
|
20468
21620
|
position: absolute;
|
|
20469
21621
|
top: 50%;
|
|
@@ -20471,9 +21623,11 @@ svg.crewlet-select__chevron {
|
|
|
20471
21623
|
display: inline-flex;
|
|
20472
21624
|
align-items: center;
|
|
20473
21625
|
justify-content: center;
|
|
20474
|
-
|
|
21626
|
+
width: var(--crewlet-sheet-history-size);
|
|
21627
|
+
height: var(--crewlet-sheet-history-size);
|
|
21628
|
+
padding: 0;
|
|
20475
21629
|
border: 0;
|
|
20476
|
-
border-radius: var(--radius-
|
|
21630
|
+
border-radius: var(--radius-md);
|
|
20477
21631
|
background: var(--color-surface-elevated);
|
|
20478
21632
|
color: var(--color-text-secondary);
|
|
20479
21633
|
transform: translateY(-50%);
|
|
@@ -20481,6 +21635,7 @@ svg.crewlet-select__chevron {
|
|
|
20481
21635
|
}
|
|
20482
21636
|
|
|
20483
21637
|
.crewlet-sheet-grid__history:hover {
|
|
21638
|
+
background: var(--color-surface-hover);
|
|
20484
21639
|
color: var(--color-text-primary);
|
|
20485
21640
|
}
|
|
20486
21641
|
|
|
@@ -20855,7 +22010,7 @@ svg.crewlet-select__chevron {
|
|
|
20855
22010
|
}
|
|
20856
22011
|
|
|
20857
22012
|
@media (forced-colors: active) {
|
|
20858
|
-
.crewlet-sheet-grid__cell--selected {
|
|
22013
|
+
.crewlet-sheet-grid__grid:is(:focus-within, .crewlet-sheet-grid__grid--range) .crewlet-sheet-grid__cell--selected {
|
|
20859
22014
|
background: Highlight;
|
|
20860
22015
|
color: HighlightText;
|
|
20861
22016
|
}
|
|
@@ -21702,7 +22857,7 @@ svg.crewlet-select__chevron {
|
|
|
21702
22857
|
}
|
|
21703
22858
|
|
|
21704
22859
|
|
|
21705
|
-
/* SlideCompare-
|
|
22860
|
+
/* SlideCompare-HTCMPQFY.css */
|
|
21706
22861
|
/*
|
|
21707
22862
|
* SlideCompare: two versions of a deck, slide by slide.
|
|
21708
22863
|
*
|
|
@@ -21761,9 +22916,34 @@ svg.crewlet-select__chevron {
|
|
|
21761
22916
|
gap: var(--spacing-3);
|
|
21762
22917
|
}
|
|
21763
22918
|
|
|
21764
|
-
.crewlet-slide-compare__side
|
|
21765
|
-
|
|
21766
|
-
|
|
22919
|
+
.crewlet-slide-compare__side {
|
|
22920
|
+
display: flex;
|
|
22921
|
+
flex-direction: column;
|
|
22922
|
+
gap: var(--spacing-1);
|
|
22923
|
+
min-width: 0;
|
|
22924
|
+
}
|
|
22925
|
+
|
|
22926
|
+
/* THE VERSIONS' NAMES over the two columns; over each side instead once the
|
|
22927
|
+
sides stack. */
|
|
22928
|
+
.crewlet-slide-compare__columns {
|
|
22929
|
+
display: grid;
|
|
22930
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
22931
|
+
gap: var(--spacing-3);
|
|
22932
|
+
padding-bottom: var(--spacing-2);
|
|
22933
|
+
border-bottom: 1px solid var(--color-border-default);
|
|
22934
|
+
color: var(--color-text-secondary);
|
|
22935
|
+
font-size: var(--font-size-xs);
|
|
22936
|
+
font-weight: var(--font-weight-semibold);
|
|
22937
|
+
}
|
|
22938
|
+
|
|
22939
|
+
.crewlet-slide-compare__side-label {
|
|
22940
|
+
display: none;
|
|
22941
|
+
color: var(--color-text-tertiary);
|
|
22942
|
+
font-size: var(--font-size-xs);
|
|
22943
|
+
}
|
|
22944
|
+
|
|
22945
|
+
.crewlet-slide-compare__toggle {
|
|
22946
|
+
align-self: flex-start;
|
|
21767
22947
|
}
|
|
21768
22948
|
|
|
21769
22949
|
.crewlet-slide-compare__missing {
|
|
@@ -21782,17 +22962,36 @@ svg.crewlet-select__chevron {
|
|
|
21782
22962
|
.crewlet-slide-compare__sides {
|
|
21783
22963
|
grid-template-columns: minmax(0, 1fr);
|
|
21784
22964
|
}
|
|
22965
|
+
|
|
22966
|
+
.crewlet-slide-compare__columns {
|
|
22967
|
+
display: none;
|
|
22968
|
+
}
|
|
22969
|
+
|
|
22970
|
+
.crewlet-slide-compare__side-label {
|
|
22971
|
+
display: block;
|
|
22972
|
+
}
|
|
21785
22973
|
}
|
|
21786
22974
|
|
|
21787
22975
|
|
|
21788
|
-
/* SlideFilmstrip-
|
|
22976
|
+
/* SlideFilmstrip-5U6Z55GS.css */
|
|
21789
22977
|
/*
|
|
21790
|
-
* SlideFilmstrip: the column of slide thumbnails beside a deck's stage
|
|
22978
|
+
* SlideFilmstrip: the column of slide thumbnails beside a deck's stage, or
|
|
22979
|
+
* the row under it on a phone.
|
|
21791
22980
|
*
|
|
21792
22981
|
* The selected slide is ringed in the brand accent rather than filled, so its
|
|
21793
22982
|
* thumbnail still shows the slide's own colours.
|
|
22983
|
+
*
|
|
22984
|
+
* THE STRIP IS ITS OWN SCROLLER: a host bounds it (a column's max-height, a
|
|
22985
|
+
* row's width) and the strip scrolls inside that, keeping the selected slide
|
|
22986
|
+
* in view, with its scroll chained to nothing so a flick at its end does not
|
|
22987
|
+
* scroll the page under the reader's thumb.
|
|
21794
22988
|
*/
|
|
21795
22989
|
|
|
22990
|
+
.crewlet-slide-filmstrip {
|
|
22991
|
+
overflow: auto;
|
|
22992
|
+
overscroll-behavior: contain;
|
|
22993
|
+
}
|
|
22994
|
+
|
|
21796
22995
|
.crewlet-slide-filmstrip__list {
|
|
21797
22996
|
display: flex;
|
|
21798
22997
|
flex-direction: column;
|
|
@@ -21860,6 +23059,9 @@ svg.crewlet-select__chevron {
|
|
|
21860
23059
|
color: var(--color-text-secondary);
|
|
21861
23060
|
}
|
|
21862
23061
|
|
|
23062
|
+
/* A CONTROL'S CORNER: the handle is a 24px control like any toolbar button,
|
|
23063
|
+
so it takes --radius-md; the thumbnail beside it is a slide, and keeps the
|
|
23064
|
+
slide's own smaller corner. */
|
|
21863
23065
|
.crewlet-slide-filmstrip__handle {
|
|
21864
23066
|
display: inline-flex;
|
|
21865
23067
|
align-items: center;
|
|
@@ -21868,7 +23070,7 @@ svg.crewlet-select__chevron {
|
|
|
21868
23070
|
min-height: var(--size-target-min);
|
|
21869
23071
|
padding: 0;
|
|
21870
23072
|
border: 0;
|
|
21871
|
-
border-radius: var(--radius-
|
|
23073
|
+
border-radius: var(--radius-md);
|
|
21872
23074
|
background: transparent;
|
|
21873
23075
|
color: var(--color-text-tertiary);
|
|
21874
23076
|
cursor: grab;
|
|
@@ -21895,8 +23097,55 @@ svg.crewlet-select__chevron {
|
|
|
21895
23097
|
box-shadow: 0 var(--spacing-1) 0 var(--color-brand-accent);
|
|
21896
23098
|
}
|
|
21897
23099
|
|
|
23100
|
+
/* A ROW UNDER THE STAGE: fixed-width thumbnails that scroll sideways, each
|
|
23101
|
+
with its number and its handle under it rather than beside it. */
|
|
23102
|
+
/* NO SCROLL SNAP: a snap point would pull the strip back to the start of an
|
|
23103
|
+
earlier thumbnail just after it scrolled the selected one into view. */
|
|
23104
|
+
.crewlet-slide-filmstrip--horizontal {
|
|
23105
|
+
overflow-y: hidden;
|
|
23106
|
+
}
|
|
23107
|
+
|
|
23108
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__list {
|
|
23109
|
+
flex-direction: row;
|
|
23110
|
+
gap: var(--spacing-3);
|
|
23111
|
+
width: max-content;
|
|
23112
|
+
}
|
|
23113
|
+
|
|
23114
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__item {
|
|
23115
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
23116
|
+
grid-template-areas:
|
|
23117
|
+
'thumb thumb'
|
|
23118
|
+
'number handle';
|
|
23119
|
+
align-items: center;
|
|
23120
|
+
width: 7.5rem;
|
|
23121
|
+
}
|
|
23122
|
+
|
|
23123
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__thumb {
|
|
23124
|
+
grid-area: thumb;
|
|
23125
|
+
}
|
|
23126
|
+
|
|
23127
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__number {
|
|
23128
|
+
grid-area: number;
|
|
23129
|
+
padding-top: 0;
|
|
23130
|
+
text-align: left;
|
|
23131
|
+
}
|
|
23132
|
+
|
|
23133
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__handle {
|
|
23134
|
+
grid-area: handle;
|
|
23135
|
+
min-height: var(--size-control-sm);
|
|
23136
|
+
cursor: grab;
|
|
23137
|
+
}
|
|
23138
|
+
|
|
23139
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__item[data-reorder-target='before'] .crewlet-slide-filmstrip__thumb {
|
|
23140
|
+
box-shadow: calc(var(--spacing-1) * -1) 0 0 var(--color-brand-accent);
|
|
23141
|
+
}
|
|
21898
23142
|
|
|
21899
|
-
|
|
23143
|
+
.crewlet-slide-filmstrip--horizontal .crewlet-slide-filmstrip__item[data-reorder-target='after'] .crewlet-slide-filmstrip__thumb {
|
|
23144
|
+
box-shadow: var(--spacing-1) 0 0 var(--color-brand-accent);
|
|
23145
|
+
}
|
|
23146
|
+
|
|
23147
|
+
|
|
23148
|
+
/* SlideGrid-S4LTJ4UU.css */
|
|
21900
23149
|
/*
|
|
21901
23150
|
* SlideGrid: every slide of a deck at once, by its outline's sections.
|
|
21902
23151
|
*/
|
|
@@ -21937,11 +23186,6 @@ svg.crewlet-select__chevron {
|
|
|
21937
23186
|
cursor: pointer;
|
|
21938
23187
|
}
|
|
21939
23188
|
|
|
21940
|
-
.crewlet-slide-grid__card .crewlet-slide-stage {
|
|
21941
|
-
border-radius: var(--radius-sm);
|
|
21942
|
-
outline: 1px solid var(--color-border-default);
|
|
21943
|
-
}
|
|
21944
|
-
|
|
21945
23189
|
.crewlet-slide-grid__card:hover .crewlet-slide-stage {
|
|
21946
23190
|
outline-color: var(--color-border-hover);
|
|
21947
23191
|
}
|
|
@@ -21980,8 +23224,73 @@ svg.crewlet-select__chevron {
|
|
|
21980
23224
|
white-space: nowrap;
|
|
21981
23225
|
}
|
|
21982
23226
|
|
|
23227
|
+
/* TWO TO A ROW ON A PHONE: a grid of one is the filmstrip at full size, and
|
|
23228
|
+
the grid is for seeing the deck's run at a glance. */
|
|
23229
|
+
@media (width < 640px) {
|
|
23230
|
+
.crewlet-slide-grid__list {
|
|
23231
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
23232
|
+
gap: var(--spacing-3);
|
|
23233
|
+
}
|
|
23234
|
+
}
|
|
23235
|
+
|
|
23236
|
+
|
|
23237
|
+
/* SlideNav-BLFJF6AH.css */
|
|
23238
|
+
/*
|
|
23239
|
+
* SlideNav: Previous, the position and Next, and whatever follows them.
|
|
23240
|
+
*/
|
|
23241
|
+
|
|
23242
|
+
.crewlet-slide-nav {
|
|
23243
|
+
display: inline-flex;
|
|
23244
|
+
align-items: center;
|
|
23245
|
+
gap: var(--spacing-1);
|
|
23246
|
+
}
|
|
23247
|
+
|
|
23248
|
+
.crewlet-slide-nav__position {
|
|
23249
|
+
min-width: 5em;
|
|
23250
|
+
color: var(--color-text-secondary);
|
|
23251
|
+
font-size: var(--font-size-sm);
|
|
23252
|
+
font-variant-numeric: tabular-nums;
|
|
23253
|
+
text-align: center;
|
|
23254
|
+
white-space: nowrap;
|
|
23255
|
+
}
|
|
23256
|
+
|
|
23257
|
+
.crewlet-slide-nav__more {
|
|
23258
|
+
display: inline-flex;
|
|
23259
|
+
align-items: center;
|
|
23260
|
+
gap: var(--spacing-1);
|
|
23261
|
+
margin-left: var(--spacing-2);
|
|
23262
|
+
padding-left: var(--spacing-3);
|
|
23263
|
+
border-left: 1px solid var(--color-border-default);
|
|
23264
|
+
}
|
|
23265
|
+
|
|
23266
|
+
/* OVER A PROJECTED SLIDE: a pill in the projection's own fixed colours, so it
|
|
23267
|
+
reads over black bars and over a slide of any colour, in every theme. */
|
|
23268
|
+
.crewlet-slide-nav--projection {
|
|
23269
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
23270
|
+
border-radius: var(--radius-pill);
|
|
23271
|
+
background: var(--color-projection-ground);
|
|
23272
|
+
color: var(--color-projection-ink);
|
|
23273
|
+
}
|
|
23274
|
+
|
|
23275
|
+
.crewlet-slide-nav--projection .crewlet-slide-nav__position {
|
|
23276
|
+
color: inherit;
|
|
23277
|
+
}
|
|
23278
|
+
|
|
23279
|
+
.crewlet-slide-nav--projection .crewlet-slide-nav__more {
|
|
23280
|
+
border-left-color: var(--color-projection-rule);
|
|
23281
|
+
}
|
|
23282
|
+
|
|
23283
|
+
.crewlet-slide-nav--projection .crewlet-icon-btn--ghost {
|
|
23284
|
+
color: inherit;
|
|
23285
|
+
}
|
|
23286
|
+
|
|
23287
|
+
.crewlet-slide-nav--projection .crewlet-icon-btn--ghost:hover:not(:disabled):not([aria-disabled='true']) {
|
|
23288
|
+
background: var(--color-projection-hover);
|
|
23289
|
+
color: inherit;
|
|
23290
|
+
}
|
|
21983
23291
|
|
|
21984
|
-
|
|
23292
|
+
|
|
23293
|
+
/* SlideStage-S2FISF4C.css */
|
|
21985
23294
|
/*
|
|
21986
23295
|
* SlideStage: a slide laid out at its authored size and scaled to its box.
|
|
21987
23296
|
*
|
|
@@ -22000,6 +23309,29 @@ svg.crewlet-select__chevron {
|
|
|
22000
23309
|
height: 100%;
|
|
22001
23310
|
}
|
|
22002
23311
|
|
|
23312
|
+
/* THE SLIDE'S OWN EDGE: the box is the slide (or, for a show in the page,
|
|
23313
|
+
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
|
|
23314
|
+
marks a stage (selected, current) recolours this outline rather than adding
|
|
23315
|
+
a second line. */
|
|
23316
|
+
.crewlet-slide-stage--framed {
|
|
23317
|
+
border-radius: var(--radius-sm);
|
|
23318
|
+
outline: 1px solid var(--color-border-default);
|
|
23319
|
+
}
|
|
23320
|
+
|
|
23321
|
+
:fullscreen .crewlet-slide-stage--framed,
|
|
23322
|
+
.crewlet-slide-stage--framed:fullscreen {
|
|
23323
|
+
border-radius: 0;
|
|
23324
|
+
outline: 0;
|
|
23325
|
+
}
|
|
23326
|
+
|
|
23327
|
+
/* FULL SCREEN IS A PROJECTOR: the bars round a slide whose shape is not the
|
|
23328
|
+
screen's are black, whatever the theme, so the room sees the slide alone. */
|
|
23329
|
+
:fullscreen .crewlet-slide-stage--contain,
|
|
23330
|
+
:fullscreen .crewlet-slide-stage--view,
|
|
23331
|
+
.crewlet-slide-stage:fullscreen {
|
|
23332
|
+
background: var(--color-projection-letterbox);
|
|
23333
|
+
}
|
|
23334
|
+
|
|
22003
23335
|
/* Until it is measured, and wherever it is not (no layout), a view stage is
|
|
22004
23336
|
its slide's shape at its width. In full screen it fills the box, sharing a
|
|
22005
23337
|
flex column with the show's controls. */
|
|
@@ -22032,7 +23364,7 @@ svg.crewlet-select__chevron {
|
|
|
22032
23364
|
}
|
|
22033
23365
|
|
|
22034
23366
|
|
|
22035
|
-
/* StatCard-
|
|
23367
|
+
/* StatCard-4T7TMWMN.css */
|
|
22036
23368
|
/*
|
|
22037
23369
|
* The stat tile.
|
|
22038
23370
|
*
|
|
@@ -22107,12 +23439,18 @@ svg.crewlet-select__chevron {
|
|
|
22107
23439
|
* The value's line: the number at its start, the figure at its end, both on
|
|
22108
23440
|
* the line's FOOT, so a 28px number and a 28px sparkline share a baseline
|
|
22109
23441
|
* rather than centring on each other.
|
|
23442
|
+
*
|
|
23443
|
+
* THE FIGURE GIVES WAY BEFORE THE NUMBER. Where a tile is too narrow for
|
|
23444
|
+
* both (a row of tiles on a phone, two to a line), the figure moves under the
|
|
23445
|
+
* number rather than the number being cut to its first digit: "2…" beside a
|
|
23446
|
+
* meter said nothing, and the meter alone says less than the number.
|
|
22110
23447
|
*/
|
|
22111
23448
|
.crewlet-statcard__reading {
|
|
22112
23449
|
display: flex;
|
|
23450
|
+
flex-wrap: wrap;
|
|
22113
23451
|
align-items: flex-end;
|
|
22114
23452
|
justify-content: space-between;
|
|
22115
|
-
gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
23453
|
+
gap: var(--spacing-2) calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
22116
23454
|
min-width: 0;
|
|
22117
23455
|
}
|
|
22118
23456
|
|
|
@@ -22121,40 +23459,51 @@ svg.crewlet-select__chevron {
|
|
|
22121
23459
|
* track, with tabular figures so a number that ticks up moves nothing beside
|
|
22122
23460
|
* it.
|
|
22123
23461
|
*
|
|
22124
|
-
* ITS LINE IS THE GLYPH'S OWN HEIGHT (a leading of 1). The
|
|
23462
|
+
* ITS LINE IS THE GLYPH'S OWN HEIGHT (a leading of 1). The number is one line
|
|
22125
23463
|
* that never wraps, and any leading over it is air under the digits that
|
|
22126
23464
|
* opens between the number and the line below it and stands the number
|
|
22127
23465
|
* higher than the figure it shares a foot with.
|
|
22128
23466
|
*
|
|
22129
|
-
*
|
|
22130
|
-
*
|
|
22131
|
-
*
|
|
22132
|
-
*
|
|
22133
|
-
* say a digit was lost. The
|
|
22134
|
-
* the number's
|
|
23467
|
+
* THE NUMBER ENDS, THE UNIT MOVES. The number and its unit are a wrapping
|
|
23468
|
+
* row on one baseline: where the tile is too narrow for both, the unit moves
|
|
23469
|
+
* under the number whole ("of 10 GB"), rather than being cut to "of 1…"; and
|
|
23470
|
+
* the number, alone on its line and still too long, ends in an ellipsis
|
|
23471
|
+
* rather than stopping mid-digit with nothing to say a digit was lost. The
|
|
23472
|
+
* ellipsis is the number's own box's, since `text-overflow` acts on a block
|
|
23473
|
+
* container only.
|
|
22135
23474
|
*/
|
|
22136
23475
|
.crewlet-statcard__value {
|
|
22137
|
-
display:
|
|
22138
|
-
flex:
|
|
23476
|
+
display: flex;
|
|
23477
|
+
flex-wrap: wrap;
|
|
23478
|
+
align-items: baseline;
|
|
23479
|
+
gap: var(--spacing-1);
|
|
23480
|
+
/* Never narrower than the number, so the figure wraps first; never wider
|
|
23481
|
+
than the tile, so a number too long for the tile alone still ends. */
|
|
23482
|
+
flex: 1 0 auto;
|
|
22139
23483
|
min-width: 0;
|
|
23484
|
+
max-width: 100%;
|
|
22140
23485
|
font-size: var(--font-size-display);
|
|
22141
23486
|
font-weight: var(--font-weight-semibold);
|
|
22142
23487
|
letter-spacing: var(--font-letter-spacing-tight);
|
|
22143
23488
|
line-height: 1;
|
|
22144
23489
|
font-variant-numeric: tabular-nums;
|
|
23490
|
+
}
|
|
23491
|
+
|
|
23492
|
+
.crewlet-statcard__number {
|
|
23493
|
+
min-width: 0;
|
|
22145
23494
|
overflow: hidden;
|
|
22146
23495
|
text-overflow: ellipsis;
|
|
22147
23496
|
white-space: nowrap;
|
|
22148
23497
|
}
|
|
22149
23498
|
|
|
22150
|
-
/* The unit,
|
|
22151
|
-
reads as part of the figure rather than as a second one. */
|
|
23499
|
+
/* The unit, on the number's baseline at a quieter weight, kept whole. */
|
|
22152
23500
|
.crewlet-statcard__unit {
|
|
22153
|
-
|
|
23501
|
+
flex: none;
|
|
22154
23502
|
font-size: var(--font-size-sm);
|
|
22155
23503
|
font-weight: var(--font-weight-medium);
|
|
22156
23504
|
letter-spacing: var(--font-letter-spacing-normal);
|
|
22157
23505
|
color: var(--color-text-tertiary);
|
|
23506
|
+
white-space: nowrap;
|
|
22158
23507
|
}
|
|
22159
23508
|
|
|
22160
23509
|
/*
|
|
@@ -22172,6 +23521,16 @@ svg.crewlet-select__chevron {
|
|
|
22172
23521
|
min-width: 0;
|
|
22173
23522
|
}
|
|
22174
23523
|
|
|
23524
|
+
/* BELOW: the figure under the number, as wide as the tile. */
|
|
23525
|
+
.crewlet-statcard__reading--below {
|
|
23526
|
+
flex-direction: column;
|
|
23527
|
+
align-items: stretch;
|
|
23528
|
+
}
|
|
23529
|
+
|
|
23530
|
+
.crewlet-statcard__reading--below > .crewlet-statcard__trend {
|
|
23531
|
+
width: auto;
|
|
23532
|
+
}
|
|
23533
|
+
|
|
22175
23534
|
.crewlet-statcard__trend > :where(button, a) {
|
|
22176
23535
|
align-self: flex-end;
|
|
22177
23536
|
}
|
|
@@ -23505,7 +24864,7 @@ b.crewlet-switcher__match {
|
|
|
23505
24864
|
}
|
|
23506
24865
|
|
|
23507
24866
|
|
|
23508
|
-
/* Tabs-
|
|
24867
|
+
/* Tabs-MMZXV5EF.css */
|
|
23509
24868
|
/*
|
|
23510
24869
|
* The pill register: Tabs and SegmentedControl.
|
|
23511
24870
|
*
|
|
@@ -23603,13 +24962,14 @@ b.crewlet-switcher__match {
|
|
|
23603
24962
|
* chips floated; the raised rung is held a visible step above the card by the
|
|
23604
24963
|
* palette suite, and the hairline finds it on any other ground.
|
|
23605
24964
|
*
|
|
23606
|
-
* The inset is
|
|
23607
|
-
*
|
|
23608
|
-
*
|
|
23609
|
-
*
|
|
24965
|
+
* The inset is 1px, a hairline of the well's own ground round each chip:
|
|
24966
|
+
* with the 1px boundary it is two pixels a side, and a 24px chip makes a 28px
|
|
24967
|
+
* row, the tab step. Tabs sit between the 26px controls of a toolbar or a
|
|
24968
|
+
* panel and the 32px actions of a page, so a row of them reads as the place's
|
|
24969
|
+
* navigation rather than as one more button beside them.
|
|
23610
24970
|
*/
|
|
23611
24971
|
.crewlet-tabs--pill {
|
|
23612
|
-
--crewlet-tabs-pill-inset:
|
|
24972
|
+
--crewlet-tabs-pill-inset: 1px;
|
|
23613
24973
|
|
|
23614
24974
|
gap: var(--crewlet-tabs-pill-inset);
|
|
23615
24975
|
padding: var(--crewlet-tabs-pill-inset);
|
|
@@ -23713,8 +25073,8 @@ b.crewlet-switcher__match {
|
|
|
23713
25073
|
* can hit. max() against --size-target-min holds every density at 24px or
|
|
23714
25074
|
* more, and at density 1 the two agree.
|
|
23715
25075
|
*
|
|
23716
|
-
* The corner is the
|
|
23717
|
-
* boundary and
|
|
25076
|
+
* The corner is the chip radius (--radius-chip): the well's 8px less its 1px
|
|
25077
|
+
* boundary and 1px inset is 6px, and a chip a pixel rounder than that
|
|
23718
25078
|
* concentric curve is what reads as a chip sitting IN the well rather than a
|
|
23719
25079
|
* second well inside it. The side pad is the design's 10px, two steps and a
|
|
23720
25080
|
* half.
|
|
@@ -23732,7 +25092,7 @@ b.crewlet-switcher__match {
|
|
|
23732
25092
|
.crewlet-tabs--pill .crewlet-tabs__tab {
|
|
23733
25093
|
min-height: max(var(--size-target-min), calc(var(--size-control-md) - 6px));
|
|
23734
25094
|
padding: 0 calc(var(--spacing-2) + var(--spacing-1) / 2);
|
|
23735
|
-
border-radius: var(--radius-
|
|
25095
|
+
border-radius: var(--radius-chip);
|
|
23736
25096
|
color: var(--color-text-secondary);
|
|
23737
25097
|
font-size: var(--font-size-xs);
|
|
23738
25098
|
}
|
|
@@ -25776,7 +27136,7 @@ svg.crewlet-time-window__tick {
|
|
|
25776
27136
|
}
|
|
25777
27137
|
|
|
25778
27138
|
|
|
25779
|
-
/* Toaster-
|
|
27139
|
+
/* Toaster-C6BQ7L6I.css */
|
|
25780
27140
|
/*
|
|
25781
27141
|
* The toast stack, drawn as the first release drew it (24a60c3): a dark strip
|
|
25782
27142
|
* on the page's deepest ground with the large shadow and the rim light, a
|
|
@@ -26013,13 +27373,22 @@ svg.crewlet-time-window__tick {
|
|
|
26013
27373
|
* THE COUNTDOWN IS A WASH BEHIND THE WORDS, the variant's soft step over the
|
|
26014
27374
|
* whole strip, draining from the right as the time runs out. It sits under
|
|
26015
27375
|
* every raised child, and it is the timer's picture, not the timer.
|
|
27376
|
+
*
|
|
27377
|
+
* ITS LEADING EDGE FADES OUT rather than stopping. Cut square, the wash read
|
|
27378
|
+
* as a strip painted in two tones whenever it stood still: in a still frame,
|
|
27379
|
+
* and under the pointer, which pauses it, which is when a reader is looking.
|
|
27380
|
+
* Feathered, a stopped wash still reads as a tint running out.
|
|
26016
27381
|
*/
|
|
26017
27382
|
.crewlet-toast__progress {
|
|
26018
27383
|
position: absolute;
|
|
26019
27384
|
inset: 0;
|
|
26020
27385
|
z-index: var(--z-index-base);
|
|
26021
27386
|
transform-origin: left center;
|
|
26022
|
-
background:
|
|
27387
|
+
background: linear-gradient(
|
|
27388
|
+
to right,
|
|
27389
|
+
var(--crewlet-toast-wash) calc(100% - var(--spacing-7)),
|
|
27390
|
+
transparent
|
|
27391
|
+
);
|
|
26023
27392
|
pointer-events: none;
|
|
26024
27393
|
animation-name: crewlet-toast-drain;
|
|
26025
27394
|
animation-timing-function: linear;
|
|
@@ -27811,7 +29180,7 @@ svg.crewlet-time-window__tick {
|
|
|
27811
29180
|
}
|
|
27812
29181
|
|
|
27813
29182
|
|
|
27814
|
-
/* WidgetFrame-
|
|
29183
|
+
/* WidgetFrame-BTFW3CRK.css */
|
|
27815
29184
|
/*
|
|
27816
29185
|
* WidgetFrame: one figure on a dashboard. A title row, the figure filling the
|
|
27817
29186
|
* height the host's frame gives it, and the citation line at the foot.
|
|
@@ -27874,6 +29243,11 @@ svg.crewlet-time-window__tick {
|
|
|
27874
29243
|
line-clamp: 2;
|
|
27875
29244
|
}
|
|
27876
29245
|
|
|
29246
|
+
/* A held title keeps its two lines empty or not (see `holdTitle`). */
|
|
29247
|
+
.crewlet-widget-frame--hold-title .crewlet-widget-frame__title {
|
|
29248
|
+
min-height: calc(2 * 1em * var(--font-line-height-snug));
|
|
29249
|
+
}
|
|
29250
|
+
|
|
27877
29251
|
/* The controls stand on the title's first line: the box is one line of the
|
|
27878
29252
|
title tall and the control is centred in it, whatever its own height. */
|
|
27879
29253
|
.crewlet-widget-frame__actions {
|
|
@@ -27891,15 +29265,27 @@ svg.crewlet-time-window__tick {
|
|
|
27891
29265
|
overflow: auto;
|
|
27892
29266
|
}
|
|
27893
29267
|
|
|
27894
|
-
/*
|
|
27895
|
-
|
|
27896
|
-
|
|
29268
|
+
/*
|
|
29269
|
+
* A flush figure reaches the frame's sides, and a table's OUTER cells take the
|
|
29270
|
+
* frame's inset, so its first column starts under the title, its last ends
|
|
29271
|
+
* where the title row's controls do, and its row rules meet the border.
|
|
29272
|
+
*
|
|
29273
|
+
* ONLY THE OUTER ONES. Every cell took the frame's 16px a side, so two columns
|
|
29274
|
+
* stood 32px apart and a table of eight columns ran past a widget the full
|
|
29275
|
+
* width of a board; between columns a cell keeps the compact table's own
|
|
29276
|
+
* inset. The last column is the last before the table's trailing spacer,
|
|
29277
|
+
* which is not a column of the data.
|
|
29278
|
+
*/
|
|
27897
29279
|
.crewlet-widget-frame--flush .crewlet-widget-frame__body {
|
|
27898
29280
|
padding-inline: 0;
|
|
27899
29281
|
}
|
|
27900
29282
|
|
|
27901
|
-
.crewlet-widget-frame--flush .crewlet-data-table--compact {
|
|
27902
|
-
|
|
29283
|
+
.crewlet-widget-frame--flush .crewlet-data-table--compact :is(th, td):first-child {
|
|
29284
|
+
padding-inline-start: var(--spacing-4);
|
|
29285
|
+
}
|
|
29286
|
+
|
|
29287
|
+
.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)) {
|
|
29288
|
+
padding-inline-end: var(--spacing-4);
|
|
27903
29289
|
}
|
|
27904
29290
|
|
|
27905
29291
|
/* A stat tile drawn flush as the figure stands on the frame's inset; its own
|
|
@@ -27909,6 +29295,23 @@ svg.crewlet-time-window__tick {
|
|
|
27909
29295
|
padding: 0;
|
|
27910
29296
|
}
|
|
27911
29297
|
|
|
29298
|
+
/* A FRAME TOO NARROW FOR THE DISPLAY NUMBER sets it a step down rather than
|
|
29299
|
+
cutting it: two columns of a board are about 120px, and a number at the
|
|
29300
|
+
display step lost its last digits there ("123.…"). */
|
|
29301
|
+
@container crewlet-widget-frame (width < 11rem) {
|
|
29302
|
+
.crewlet-widget-frame__body .crewlet-statcard__value {
|
|
29303
|
+
font-size: var(--font-size-xl);
|
|
29304
|
+
}
|
|
29305
|
+
}
|
|
29306
|
+
|
|
29307
|
+
/* NOR DOES IT RESERVE A SECOND LINE IT HAS NOTHING FOR. The reserve keeps a
|
|
29308
|
+
StatGroup's tiles at one height; a frame takes its height from the board,
|
|
29309
|
+
and the empty line stood as a band of air between the number and the
|
|
29310
|
+
citation that no other figure has. */
|
|
29311
|
+
.crewlet-widget-frame__body .crewlet-statcard__sub:empty {
|
|
29312
|
+
display: none;
|
|
29313
|
+
}
|
|
29314
|
+
|
|
27912
29315
|
.crewlet-widget-frame__blocked {
|
|
27913
29316
|
display: flex;
|
|
27914
29317
|
align-items: flex-start;
|
|
@@ -28004,8 +29407,18 @@ svg.crewlet-time-window__tick {
|
|
|
28004
29407
|
align-items: flex-start;
|
|
28005
29408
|
}
|
|
28006
29409
|
|
|
29410
|
+
/* STACKED, THE TITLE TAKES A SECOND LINE BEFORE IT ENDS: a frame three
|
|
29411
|
+
columns wide cut "Deploys for the chosen service" to "Deploys for the
|
|
29412
|
+
chosen se…". Past two lines it ends in an ellipsis, and the whole title
|
|
29413
|
+
is the citation's tooltip. */
|
|
28007
29414
|
.crewlet-widget-frame__source {
|
|
29415
|
+
display: -webkit-box;
|
|
28008
29416
|
max-width: 100%;
|
|
29417
|
+
white-space: normal;
|
|
29418
|
+
overflow-wrap: anywhere;
|
|
29419
|
+
-webkit-box-orient: vertical;
|
|
29420
|
+
-webkit-line-clamp: 2;
|
|
29421
|
+
line-clamp: 2;
|
|
28009
29422
|
}
|
|
28010
29423
|
|
|
28011
29424
|
.crewlet-widget-frame__when::before {
|