@dillingerstaffing/strand-vue 0.16.0 → 0.17.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/dist/components/CardSection/CardSection.vue.d.ts +27 -0
- package/dist/components/CardSection/CardSection.vue.d.ts.map +1 -0
- package/dist/components/CardSection/index.d.ts +2 -0
- package/dist/components/CardSection/index.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScale.vue.d.ts +23 -0
- package/dist/components/ContainerScale/ContainerScale.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScaleAxis.vue.d.ts +23 -0
- package/dist/components/ContainerScale/ContainerScaleAxis.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScaleBar.vue.d.ts +24 -0
- package/dist/components/ContainerScale/ContainerScaleBar.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScaleCaption.vue.d.ts +23 -0
- package/dist/components/ContainerScale/ContainerScaleCaption.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScaleLabel.vue.d.ts +23 -0
- package/dist/components/ContainerScale/ContainerScaleLabel.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScalePx.vue.d.ts +23 -0
- package/dist/components/ContainerScale/ContainerScalePx.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScaleRow.vue.d.ts +23 -0
- package/dist/components/ContainerScale/ContainerScaleRow.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/ContainerScaleTrack.vue.d.ts +23 -0
- package/dist/components/ContainerScale/ContainerScaleTrack.vue.d.ts.map +1 -0
- package/dist/components/ContainerScale/index.d.ts +9 -0
- package/dist/components/ContainerScale/index.d.ts.map +1 -0
- package/dist/components/KvEditorial/KvEditorial.vue.d.ts +32 -0
- package/dist/components/KvEditorial/KvEditorial.vue.d.ts.map +1 -0
- package/dist/components/KvEditorial/index.d.ts +2 -0
- package/dist/components/KvEditorial/index.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrame.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFrame.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameActions.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFrameActions.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameBody.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFrameBody.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameChrome.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFrameChrome.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameContent.vue.d.ts +25 -0
- package/dist/components/LabFrame/LabFrameContent.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameContentHead.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFrameContentHead.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameDot.vue.d.ts +9 -0
- package/dist/components/LabFrame/LabFrameDot.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameOverlay.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFrameOverlay.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFramePanel.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFramePanel.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFramePanelBody.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFramePanelBody.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFramePanelClose.vue.d.ts +25 -0
- package/dist/components/LabFrame/LabFramePanelClose.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFramePanelFooter.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFramePanelFooter.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFramePanelHeader.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFramePanelHeader.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFramePanelTitle.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFramePanelTitle.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/LabFrameTitle.vue.d.ts +23 -0
- package/dist/components/LabFrame/LabFrameTitle.vue.d.ts.map +1 -0
- package/dist/components/LabFrame/index.d.ts +16 -0
- package/dist/components/LabFrame/index.d.ts.map +1 -0
- package/dist/components/LabGlassStage/LabGlassPanel.vue.d.ts +23 -0
- package/dist/components/LabGlassStage/LabGlassPanel.vue.d.ts.map +1 -0
- package/dist/components/LabGlassStage/LabGlassStage.vue.d.ts +23 -0
- package/dist/components/LabGlassStage/LabGlassStage.vue.d.ts.map +1 -0
- package/dist/components/LabGlassStage/index.d.ts +3 -0
- package/dist/components/LabGlassStage/index.d.ts.map +1 -0
- package/dist/components/LabRevealStage/LabRevealLine.vue.d.ts +23 -0
- package/dist/components/LabRevealStage/LabRevealLine.vue.d.ts.map +1 -0
- package/dist/components/LabRevealStage/LabRevealStage.vue.d.ts +23 -0
- package/dist/components/LabRevealStage/LabRevealStage.vue.d.ts.map +1 -0
- package/dist/components/LabRevealStage/index.d.ts +3 -0
- package/dist/components/LabRevealStage/index.d.ts.map +1 -0
- package/dist/components/LabShell/LabBrand.vue.d.ts +23 -0
- package/dist/components/LabShell/LabBrand.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabBrandMark.vue.d.ts +23 -0
- package/dist/components/LabShell/LabBrandMark.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabBrandSub.vue.d.ts +23 -0
- package/dist/components/LabShell/LabBrandSub.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabBrandTitle.vue.d.ts +23 -0
- package/dist/components/LabShell/LabBrandTitle.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabExample.vue.d.ts +23 -0
- package/dist/components/LabShell/LabExample.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabExampleCaption.vue.d.ts +23 -0
- package/dist/components/LabShell/LabExampleCaption.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabExampleCode.vue.d.ts +23 -0
- package/dist/components/LabShell/LabExampleCode.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabExampleDemo.vue.d.ts +27 -0
- package/dist/components/LabShell/LabExampleDemo.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabExampleLabel.vue.d.ts +23 -0
- package/dist/components/LabShell/LabExampleLabel.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabExampleMeta.vue.d.ts +23 -0
- package/dist/components/LabShell/LabExampleMeta.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabHeader.vue.d.ts +23 -0
- package/dist/components/LabShell/LabHeader.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabHeaderLead.vue.d.ts +23 -0
- package/dist/components/LabShell/LabHeaderLead.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabHeaderMeta.vue.d.ts +23 -0
- package/dist/components/LabShell/LabHeaderMeta.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabHeaderMetaItem.vue.d.ts +23 -0
- package/dist/components/LabShell/LabHeaderMetaItem.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabHeaderMetaLabel.vue.d.ts +23 -0
- package/dist/components/LabShell/LabHeaderMetaLabel.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabHeaderMetaValue.vue.d.ts +23 -0
- package/dist/components/LabShell/LabHeaderMetaValue.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabHeaderTitle.vue.d.ts +23 -0
- package/dist/components/LabShell/LabHeaderTitle.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabMain.vue.d.ts +23 -0
- package/dist/components/LabShell/LabMain.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSection.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSection.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSectionBody.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSectionBody.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSectionHead.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSectionHead.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSectionHeadNote.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSectionHeadNote.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabShell.vue.d.ts +23 -0
- package/dist/components/LabShell/LabShell.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebar.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSidebar.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebarGroup.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSidebarGroup.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebarGroupDot.vue.d.ts +8 -0
- package/dist/components/LabShell/LabSidebarGroupDot.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebarGroupLabel.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSidebarGroupLabel.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebarGroupLink.vue.d.ts +25 -0
- package/dist/components/LabShell/LabSidebarGroupLink.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebarGroupList.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSidebarGroupList.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebarHead.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSidebarHead.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabSidebarScroll.vue.d.ts +23 -0
- package/dist/components/LabShell/LabSidebarScroll.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabTaxonomy.vue.d.ts +23 -0
- package/dist/components/LabShell/LabTaxonomy.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabTaxonomyList.vue.d.ts +23 -0
- package/dist/components/LabShell/LabTaxonomyList.vue.d.ts.map +1 -0
- package/dist/components/LabShell/LabTaxonomyTitle.vue.d.ts +23 -0
- package/dist/components/LabShell/LabTaxonomyTitle.vue.d.ts.map +1 -0
- package/dist/components/LabShell/index.d.ts +35 -0
- package/dist/components/LabShell/index.d.ts.map +1 -0
- package/dist/components/LabTip/LabTip.vue.d.ts +25 -0
- package/dist/components/LabTip/LabTip.vue.d.ts.map +1 -0
- package/dist/components/LabTip/LabTipBubble.vue.d.ts +26 -0
- package/dist/components/LabTip/LabTipBubble.vue.d.ts.map +1 -0
- package/dist/components/LabTip/index.d.ts +3 -0
- package/dist/components/LabTip/index.d.ts.map +1 -0
- package/dist/components/LabUtilCell/LabUtilCell.vue.d.ts +23 -0
- package/dist/components/LabUtilCell/LabUtilCell.vue.d.ts.map +1 -0
- package/dist/components/LabUtilCell/LabUtilCellBlock.vue.d.ts +23 -0
- package/dist/components/LabUtilCell/LabUtilCellBlock.vue.d.ts.map +1 -0
- package/dist/components/LabUtilCell/LabUtilCellCaption.vue.d.ts +23 -0
- package/dist/components/LabUtilCell/LabUtilCellCaption.vue.d.ts.map +1 -0
- package/dist/components/LabUtilCell/LabUtilCellCode.vue.d.ts +23 -0
- package/dist/components/LabUtilCell/LabUtilCellCode.vue.d.ts.map +1 -0
- package/dist/components/LabUtilCell/LabUtilCellDemo.vue.d.ts +23 -0
- package/dist/components/LabUtilCell/LabUtilCellDemo.vue.d.ts.map +1 -0
- package/dist/components/LabUtilCell/LabUtilRow.vue.d.ts +23 -0
- package/dist/components/LabUtilCell/LabUtilRow.vue.d.ts.map +1 -0
- package/dist/components/LabUtilCell/index.d.ts +7 -0
- package/dist/components/LabUtilCell/index.d.ts.map +1 -0
- package/dist/components/Swatch/Swatch.vue.d.ts +12 -0
- package/dist/components/Swatch/Swatch.vue.d.ts.map +1 -0
- package/dist/components/Swatch/SwatchGrid.vue.d.ts +23 -0
- package/dist/components/Swatch/SwatchGrid.vue.d.ts.map +1 -0
- package/dist/components/Swatch/index.d.ts +3 -0
- package/dist/components/Swatch/index.d.ts.map +1 -0
- package/dist/components/TokenSpecimen/TokenSpecimen.vue.d.ts +23 -0
- package/dist/components/TokenSpecimen/TokenSpecimen.vue.d.ts.map +1 -0
- package/dist/components/TokenSpecimen/TokenSpecimenBox.vue.d.ts +10 -0
- package/dist/components/TokenSpecimen/TokenSpecimenBox.vue.d.ts.map +1 -0
- package/dist/components/TokenSpecimen/TokenSpecimenGrid.vue.d.ts +23 -0
- package/dist/components/TokenSpecimen/TokenSpecimenGrid.vue.d.ts.map +1 -0
- package/dist/components/TokenSpecimen/TokenSpecimenSpacer.vue.d.ts +9 -0
- package/dist/components/TokenSpecimen/TokenSpecimenSpacer.vue.d.ts.map +1 -0
- package/dist/components/TokenSpecimen/index.d.ts +5 -0
- package/dist/components/TokenSpecimen/index.d.ts.map +1 -0
- package/dist/components/TypeSpecimen/TypeSpecimen.vue.d.ts +23 -0
- package/dist/components/TypeSpecimen/TypeSpecimen.vue.d.ts.map +1 -0
- package/dist/components/TypeSpecimen/TypeSpecimenMeta.vue.d.ts +23 -0
- package/dist/components/TypeSpecimen/TypeSpecimenMeta.vue.d.ts.map +1 -0
- package/dist/components/TypeSpecimen/index.d.ts +3 -0
- package/dist/components/TypeSpecimen/index.d.ts.map +1 -0
- package/dist/css/strand-ui.css +1268 -87
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1797 -756
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/components/CardSection/CardSection.test.ts +51 -0
- package/src/components/CardSection/CardSection.vue +42 -0
- package/src/components/CardSection/index.ts +1 -0
- package/src/components/ContainerScale/ContainerScale.test.ts +42 -0
- package/src/components/ContainerScale/ContainerScale.vue +8 -0
- package/src/components/ContainerScale/ContainerScaleAxis.vue +8 -0
- package/src/components/ContainerScale/ContainerScaleBar.vue +17 -0
- package/src/components/ContainerScale/ContainerScaleCaption.vue +8 -0
- package/src/components/ContainerScale/ContainerScaleLabel.vue +8 -0
- package/src/components/ContainerScale/ContainerScalePx.vue +8 -0
- package/src/components/ContainerScale/ContainerScaleRow.vue +8 -0
- package/src/components/ContainerScale/ContainerScaleTrack.vue +8 -0
- package/src/components/ContainerScale/index.ts +8 -0
- package/src/components/KvEditorial/KvEditorial.test.ts +43 -0
- package/src/components/KvEditorial/KvEditorial.vue +56 -0
- package/src/components/KvEditorial/index.ts +1 -0
- package/src/components/LabFrame/LabFrame.test.ts +89 -0
- package/src/components/LabFrame/LabFrame.vue +8 -0
- package/src/components/LabFrame/LabFrameActions.vue +8 -0
- package/src/components/LabFrame/LabFrameBody.vue +8 -0
- package/src/components/LabFrame/LabFrameChrome.vue +8 -0
- package/src/components/LabFrame/LabFrameContent.vue +17 -0
- package/src/components/LabFrame/LabFrameContentHead.vue +8 -0
- package/src/components/LabFrame/LabFrameDot.vue +15 -0
- package/src/components/LabFrame/LabFrameOverlay.vue +8 -0
- package/src/components/LabFrame/LabFramePanel.vue +11 -0
- package/src/components/LabFrame/LabFramePanelBody.vue +8 -0
- package/src/components/LabFrame/LabFramePanelClose.vue +26 -0
- package/src/components/LabFrame/LabFramePanelFooter.vue +8 -0
- package/src/components/LabFrame/LabFramePanelHeader.vue +8 -0
- package/src/components/LabFrame/LabFramePanelTitle.vue +8 -0
- package/src/components/LabFrame/LabFrameTitle.vue +8 -0
- package/src/components/LabFrame/index.ts +15 -0
- package/src/components/LabGlassStage/LabGlassPanel.vue +8 -0
- package/src/components/LabGlassStage/LabGlassStage.test.ts +16 -0
- package/src/components/LabGlassStage/LabGlassStage.vue +8 -0
- package/src/components/LabGlassStage/index.ts +2 -0
- package/src/components/LabRevealStage/LabRevealLine.vue +8 -0
- package/src/components/LabRevealStage/LabRevealStage.test.ts +16 -0
- package/src/components/LabRevealStage/LabRevealStage.vue +8 -0
- package/src/components/LabRevealStage/index.ts +2 -0
- package/src/components/LabShell/LabBrand.vue +8 -0
- package/src/components/LabShell/LabBrandMark.vue +8 -0
- package/src/components/LabShell/LabBrandSub.vue +8 -0
- package/src/components/LabShell/LabBrandTitle.vue +8 -0
- package/src/components/LabShell/LabExample.vue +8 -0
- package/src/components/LabShell/LabExampleCaption.vue +8 -0
- package/src/components/LabShell/LabExampleCode.vue +8 -0
- package/src/components/LabShell/LabExampleDemo.vue +30 -0
- package/src/components/LabShell/LabExampleLabel.vue +8 -0
- package/src/components/LabShell/LabExampleMeta.vue +8 -0
- package/src/components/LabShell/LabHeader.vue +8 -0
- package/src/components/LabShell/LabHeaderLead.vue +8 -0
- package/src/components/LabShell/LabHeaderMeta.vue +8 -0
- package/src/components/LabShell/LabHeaderMetaItem.vue +8 -0
- package/src/components/LabShell/LabHeaderMetaLabel.vue +8 -0
- package/src/components/LabShell/LabHeaderMetaValue.vue +8 -0
- package/src/components/LabShell/LabHeaderTitle.vue +8 -0
- package/src/components/LabShell/LabMain.vue +8 -0
- package/src/components/LabShell/LabSection.vue +8 -0
- package/src/components/LabShell/LabSectionBody.vue +8 -0
- package/src/components/LabShell/LabSectionHead.vue +8 -0
- package/src/components/LabShell/LabSectionHeadNote.vue +8 -0
- package/src/components/LabShell/LabShell.test.ts +166 -0
- package/src/components/LabShell/LabShell.vue +12 -0
- package/src/components/LabShell/LabSidebar.vue +8 -0
- package/src/components/LabShell/LabSidebarGroup.vue +8 -0
- package/src/components/LabShell/LabSidebarGroupDot.vue +8 -0
- package/src/components/LabShell/LabSidebarGroupLabel.vue +8 -0
- package/src/components/LabShell/LabSidebarGroupLink.vue +14 -0
- package/src/components/LabShell/LabSidebarGroupList.vue +8 -0
- package/src/components/LabShell/LabSidebarHead.vue +8 -0
- package/src/components/LabShell/LabSidebarScroll.vue +8 -0
- package/src/components/LabShell/LabTaxonomy.vue +8 -0
- package/src/components/LabShell/LabTaxonomyList.vue +8 -0
- package/src/components/LabShell/LabTaxonomyTitle.vue +8 -0
- package/src/components/LabShell/index.ts +34 -0
- package/src/components/LabTip/LabTip.test.ts +39 -0
- package/src/components/LabTip/LabTip.vue +18 -0
- package/src/components/LabTip/LabTipBubble.vue +19 -0
- package/src/components/LabTip/index.ts +2 -0
- package/src/components/LabUtilCell/LabUtilCell.test.ts +25 -0
- package/src/components/LabUtilCell/LabUtilCell.vue +8 -0
- package/src/components/LabUtilCell/LabUtilCellBlock.vue +8 -0
- package/src/components/LabUtilCell/LabUtilCellCaption.vue +8 -0
- package/src/components/LabUtilCell/LabUtilCellCode.vue +8 -0
- package/src/components/LabUtilCell/LabUtilCellDemo.vue +8 -0
- package/src/components/LabUtilCell/LabUtilRow.vue +8 -0
- package/src/components/LabUtilCell/index.ts +6 -0
- package/src/components/Swatch/Swatch.test.ts +29 -0
- package/src/components/Swatch/Swatch.vue +23 -0
- package/src/components/Swatch/SwatchGrid.vue +8 -0
- package/src/components/Swatch/index.ts +2 -0
- package/src/components/TokenSpecimen/TokenSpecimen.test.ts +41 -0
- package/src/components/TokenSpecimen/TokenSpecimen.vue +8 -0
- package/src/components/TokenSpecimen/TokenSpecimenBox.vue +23 -0
- package/src/components/TokenSpecimen/TokenSpecimenGrid.vue +8 -0
- package/src/components/TokenSpecimen/TokenSpecimenSpacer.vue +20 -0
- package/src/components/TokenSpecimen/index.ts +4 -0
- package/src/components/TypeSpecimen/TypeSpecimen.test.ts +17 -0
- package/src/components/TypeSpecimen/TypeSpecimen.vue +8 -0
- package/src/components/TypeSpecimen/TypeSpecimenMeta.vue +8 -0
- package/src/components/TypeSpecimen/index.ts +2 -0
- package/src/index.ts +18 -0
package/dist/css/strand-ui.css
CHANGED
|
@@ -735,13 +735,56 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
735
735
|
outline-offset: 2px;
|
|
736
736
|
}
|
|
737
737
|
|
|
738
|
+
/* ── Card section (BEM element, stacked rows inside a card) ──
|
|
739
|
+
A horizontal row inside a composed card. Use multiple
|
|
740
|
+
.strand-card__section children inside a .strand-card--pad-none
|
|
741
|
+
to stack header / body / cta rows separated by horizontal rules.
|
|
742
|
+
First child renders without the top border so the top edge of
|
|
743
|
+
the card is clean. The --header modifier turns a section into a
|
|
744
|
+
top-row header with baseline space-between layout for title
|
|
745
|
+
plus trailing chrome (e.g., overline + chip). This is distinct
|
|
746
|
+
from the standalone .strand-card-section molecule (DL 11.10
|
|
747
|
+
section-boundary production), which is a same-named BEM block
|
|
748
|
+
used outside cards. */
|
|
749
|
+
.strand-card__section {
|
|
750
|
+
display: block;
|
|
751
|
+
padding: var(--strand-space-5) var(--strand-space-6);
|
|
752
|
+
border-top: 1px solid var(--strand-gray-200);
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.strand-card__section:first-child {
|
|
756
|
+
border-top: 0;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
.strand-card__section--header {
|
|
760
|
+
display: flex;
|
|
761
|
+
align-items: flex-start;
|
|
762
|
+
justify-content: space-between;
|
|
763
|
+
gap: var(--strand-space-4);
|
|
764
|
+
}
|
|
765
|
+
|
|
738
766
|
/* ── Channel grid helpers ──
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
content
|
|
767
|
+
Equal-height card row with a natural top-to-bottom stack inside each
|
|
768
|
+
card and the final horizontal row (the CTA) anchored to the card's
|
|
769
|
+
bottom edge. Cards in the same row align to the tallest card's
|
|
770
|
+
height; an uneven content mix never produces the ragged-bottom look
|
|
771
|
+
where some cards end tall and others stop short. Useful for channel
|
|
772
|
+
listings, membership grids, and any layout where cards carry a
|
|
773
|
+
primary CTA that must read as the shared affordance across the row. */
|
|
743
774
|
.strand-channel-grid {
|
|
744
|
-
align-items:
|
|
775
|
+
align-items: stretch;
|
|
776
|
+
}
|
|
777
|
+
.strand-channel-grid > .strand-card {
|
|
778
|
+
display: flex;
|
|
779
|
+
flex-direction: column;
|
|
780
|
+
}
|
|
781
|
+
.strand-channel-grid > .strand-card > .strand-stack--vertical {
|
|
782
|
+
flex: 1;
|
|
783
|
+
display: flex;
|
|
784
|
+
flex-direction: column;
|
|
785
|
+
}
|
|
786
|
+
.strand-channel-grid > .strand-card > .strand-stack--vertical > .strand-stack--horizontal:last-child {
|
|
787
|
+
margin-top: auto;
|
|
745
788
|
}
|
|
746
789
|
|
|
747
790
|
.strand-channel-title {
|
|
@@ -1124,6 +1167,91 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
1124
1167
|
}
|
|
1125
1168
|
|
|
1126
1169
|
|
|
1170
|
+
/* ContainerScale */
|
|
1171
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
1172
|
+
|
|
1173
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
1174
|
+
|
|
1175
|
+
/* ══════════════════════════════════════════════════
|
|
1176
|
+
CONTAINER SCALE (width visualizer)
|
|
1177
|
+
══════════════════════════════════════════════════
|
|
1178
|
+
A stacked set of horizontal bars demonstrating container
|
|
1179
|
+
widths (narrow / default / wide / full). Each bar's width
|
|
1180
|
+
is set inline per row via its consumer. */
|
|
1181
|
+
|
|
1182
|
+
.strand-container-scale {
|
|
1183
|
+
display: flex;
|
|
1184
|
+
flex-direction: column;
|
|
1185
|
+
gap: var(--strand-space-4);
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
.strand-container-scale__row {
|
|
1189
|
+
display: flex;
|
|
1190
|
+
flex-direction: column;
|
|
1191
|
+
gap: 6px;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
.strand-container-scale__label {
|
|
1195
|
+
display: flex;
|
|
1196
|
+
justify-content: space-between;
|
|
1197
|
+
align-items: baseline;
|
|
1198
|
+
font-size: 11px;
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
.strand-container-scale__label code {
|
|
1202
|
+
font-family: var(--strand-font-mono);
|
|
1203
|
+
font-size: 11px;
|
|
1204
|
+
color: var(--strand-blue-primary);
|
|
1205
|
+
font-weight: var(--strand-weight-medium);
|
|
1206
|
+
background: transparent;
|
|
1207
|
+
padding: 0;
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
.strand-container-scale__caption {
|
|
1211
|
+
color: var(--strand-gray-500);
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
.strand-container-scale__track {
|
|
1215
|
+
height: 22px;
|
|
1216
|
+
background: var(--strand-surface-recessed);
|
|
1217
|
+
border-radius: var(--strand-radius-sm);
|
|
1218
|
+
position: relative;
|
|
1219
|
+
border: 1px solid var(--strand-gray-200);
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
.strand-container-scale__bar {
|
|
1223
|
+
height: 100%;
|
|
1224
|
+
background: linear-gradient(
|
|
1225
|
+
90deg,
|
|
1226
|
+
rgba(37, 99, 235, 0.14),
|
|
1227
|
+
rgba(37, 99, 235, 0.22)
|
|
1228
|
+
);
|
|
1229
|
+
border-right: 2px solid var(--strand-blue-primary);
|
|
1230
|
+
display: flex;
|
|
1231
|
+
align-items: center;
|
|
1232
|
+
justify-content: flex-end;
|
|
1233
|
+
padding-right: var(--strand-space-2);
|
|
1234
|
+
transition: width 300ms var(--strand-ease-out-expo);
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
.strand-container-scale__px {
|
|
1238
|
+
font-family: var(--strand-font-mono);
|
|
1239
|
+
font-size: 10px;
|
|
1240
|
+
font-weight: var(--strand-weight-medium);
|
|
1241
|
+
color: var(--strand-blue-primary);
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
.strand-container-scale__axis {
|
|
1245
|
+
display: flex;
|
|
1246
|
+
justify-content: space-between;
|
|
1247
|
+
margin-top: var(--strand-space-1);
|
|
1248
|
+
font-family: var(--strand-font-mono);
|
|
1249
|
+
font-size: 9px;
|
|
1250
|
+
letter-spacing: 0.06em;
|
|
1251
|
+
color: var(--strand-gray-400);
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
|
|
1127
1255
|
/* DataReadout */
|
|
1128
1256
|
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
1129
1257
|
|
|
@@ -1547,6 +1675,26 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
1547
1675
|
.strand-instrument-viewport .strand-kv__label { color: var(--strand-gray-400); }
|
|
1548
1676
|
.strand-instrument-viewport .strand-kv__value { color: var(--strand-gray-200); }
|
|
1549
1677
|
|
|
1678
|
+
/* Dark-surface cascades for status chips and ghost buttons.
|
|
1679
|
+
The light-surface defaults of .strand-status-chip--neutral and
|
|
1680
|
+
.strand-btn--ghost lose contrast when placed on the dark
|
|
1681
|
+
instrument viewport (full-bleed body or recessed panel). Apply
|
|
1682
|
+
matching on-dark treatments so consumers never need inline
|
|
1683
|
+
style overrides. Scoped to both .strand-body--instrument (full
|
|
1684
|
+
page mode) and .strand-instrument-viewport (recessed panel). */
|
|
1685
|
+
.strand-body--instrument .strand-status-chip--neutral,
|
|
1686
|
+
.strand-instrument-viewport .strand-status-chip--neutral {
|
|
1687
|
+
background: color-mix(in srgb, var(--strand-gray-400) 12%, transparent);
|
|
1688
|
+
color: var(--strand-gray-300);
|
|
1689
|
+
border: 1px solid color-mix(in srgb, var(--strand-gray-400) 20%, transparent);
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1692
|
+
.strand-body--instrument .strand-btn--ghost,
|
|
1693
|
+
.strand-instrument-viewport .strand-btn--ghost {
|
|
1694
|
+
color: var(--strand-on-blue-primary);
|
|
1695
|
+
border-color: rgba(255, 255, 255, 0.2);
|
|
1696
|
+
}
|
|
1697
|
+
|
|
1550
1698
|
.strand-instrument-viewport__label {
|
|
1551
1699
|
color: var(--strand-gray-400);
|
|
1552
1700
|
font-family: var(--strand-font-mono);
|
|
@@ -2800,108 +2948,962 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
2800
2948
|
margin-bottom: var(--strand-space-4);
|
|
2801
2949
|
}
|
|
2802
2950
|
|
|
2803
|
-
.strand-detail-panel__close:hover {
|
|
2804
|
-
background: var(--strand-blue-glow);
|
|
2805
|
-
}
|
|
2951
|
+
.strand-detail-panel__close:hover {
|
|
2952
|
+
background: var(--strand-blue-glow);
|
|
2953
|
+
}
|
|
2954
|
+
|
|
2955
|
+
.strand-detail-panel__close-icon {
|
|
2956
|
+
display: none;
|
|
2957
|
+
}
|
|
2958
|
+
|
|
2959
|
+
.strand-detail-panel__close-text {
|
|
2960
|
+
display: inline;
|
|
2961
|
+
}
|
|
2962
|
+
|
|
2963
|
+
.strand-detail-panel > .strand-overline {
|
|
2964
|
+
margin-bottom: var(--strand-space-2);
|
|
2965
|
+
}
|
|
2966
|
+
|
|
2967
|
+
.strand-map-legend,
|
|
2968
|
+
.strand-coord-readout {
|
|
2969
|
+
display: none;
|
|
2970
|
+
}
|
|
2971
|
+
|
|
2972
|
+
.strand-search-bar__input {
|
|
2973
|
+
font-size: 16px;
|
|
2974
|
+
}
|
|
2975
|
+
}
|
|
2976
|
+
|
|
2977
|
+
/* ──────────────────────────────────────────────
|
|
2978
|
+
REDUCED MOTION
|
|
2979
|
+
──────────────────────────────────────────────
|
|
2980
|
+
Strip every animation and transition from the FUI primitives
|
|
2981
|
+
when the user has prefers-reduced-motion. The instrument is
|
|
2982
|
+
still readable, just static. */
|
|
2983
|
+
|
|
2984
|
+
@media (prefers-reduced-motion: reduce) {
|
|
2985
|
+
.strand-scanline,
|
|
2986
|
+
.strand-scanline--ambient {
|
|
2987
|
+
display: none;
|
|
2988
|
+
}
|
|
2989
|
+
|
|
2990
|
+
.strand-instrument-viewport--full-bleed::after {
|
|
2991
|
+
animation: none;
|
|
2992
|
+
}
|
|
2993
|
+
|
|
2994
|
+
.strand-map-pin {
|
|
2995
|
+
animation: none;
|
|
2996
|
+
}
|
|
2997
|
+
|
|
2998
|
+
.strand-map-pin::before,
|
|
2999
|
+
.strand-map-pin::after {
|
|
3000
|
+
animation: none;
|
|
3001
|
+
}
|
|
3002
|
+
|
|
3003
|
+
.strand-map-pin:hover {
|
|
3004
|
+
animation: none;
|
|
3005
|
+
}
|
|
3006
|
+
|
|
3007
|
+
.strand-map-pin:hover::before,
|
|
3008
|
+
.strand-map-pin:hover::after {
|
|
3009
|
+
animation: none;
|
|
3010
|
+
}
|
|
3011
|
+
|
|
3012
|
+
.strand-detail-panel {
|
|
3013
|
+
transition: none;
|
|
3014
|
+
}
|
|
3015
|
+
|
|
3016
|
+
.strand-detail-panel.is-open > .strand-overline,
|
|
3017
|
+
.strand-detail-panel--open > .strand-overline,
|
|
3018
|
+
.strand-detail-panel.open > .strand-overline,
|
|
3019
|
+
.strand-detail-panel.is-open .strand-detail-panel__title,
|
|
3020
|
+
.strand-detail-panel--open .strand-detail-panel__title,
|
|
3021
|
+
.strand-detail-panel.open .strand-detail-panel__title,
|
|
3022
|
+
.strand-detail-panel.is-open .strand-detail-panel__meta,
|
|
3023
|
+
.strand-detail-panel--open .strand-detail-panel__meta,
|
|
3024
|
+
.strand-detail-panel.open .strand-detail-panel__meta,
|
|
3025
|
+
.strand-detail-panel.is-open .strand-detail-panel__salary,
|
|
3026
|
+
.strand-detail-panel--open .strand-detail-panel__salary,
|
|
3027
|
+
.strand-detail-panel.open .strand-detail-panel__salary,
|
|
3028
|
+
.strand-detail-panel.is-open .strand-detail-panel__cta,
|
|
3029
|
+
.strand-detail-panel--open .strand-detail-panel__cta,
|
|
3030
|
+
.strand-detail-panel.open .strand-detail-panel__cta,
|
|
3031
|
+
.strand-detail-panel.is-open .strand-detail-panel__source,
|
|
3032
|
+
.strand-detail-panel--open .strand-detail-panel__source,
|
|
3033
|
+
.strand-detail-panel.open .strand-detail-panel__source {
|
|
3034
|
+
animation: none;
|
|
3035
|
+
}
|
|
3036
|
+
|
|
3037
|
+
.strand-map-legend__title::before {
|
|
3038
|
+
animation: none;
|
|
3039
|
+
}
|
|
3040
|
+
|
|
3041
|
+
.strand-coord-readout::before {
|
|
3042
|
+
animation: none;
|
|
3043
|
+
}
|
|
3044
|
+
|
|
3045
|
+
.strand-map-loading__spinner {
|
|
3046
|
+
animation: none;
|
|
3047
|
+
border-color: rgba(59, 142, 246, 0.4);
|
|
3048
|
+
}
|
|
3049
|
+
|
|
3050
|
+
.strand-search-bar__action--locating {
|
|
3051
|
+
animation: none;
|
|
3052
|
+
}
|
|
3053
|
+
}
|
|
3054
|
+
|
|
3055
|
+
|
|
3056
|
+
/* LabFrame */
|
|
3057
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3058
|
+
|
|
3059
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3060
|
+
|
|
3061
|
+
/* ══════════════════════════════════════════════════
|
|
3062
|
+
LAB FRAME (fake in-page window hosting a modal demo)
|
|
3063
|
+
══════════════════════════════════════════════════
|
|
3064
|
+
Doc-specific framing primitive. Real Strand Dialog steals
|
|
3065
|
+
the whole viewport; this frame hosts a dialog-style demo
|
|
3066
|
+
inline so docs can show the open state without replacing
|
|
3067
|
+
the page. Uses macOS-style traffic-light chrome with dot
|
|
3068
|
+
colors set inline per dot. */
|
|
3069
|
+
|
|
3070
|
+
.strand-ref-frame {
|
|
3071
|
+
background: var(--strand-surface-recessed);
|
|
3072
|
+
border-radius: var(--strand-radius-lg);
|
|
3073
|
+
overflow: hidden;
|
|
3074
|
+
}
|
|
3075
|
+
|
|
3076
|
+
.strand-ref-frame__chrome {
|
|
3077
|
+
display: flex;
|
|
3078
|
+
align-items: center;
|
|
3079
|
+
gap: 6px;
|
|
3080
|
+
padding: 10px 14px;
|
|
3081
|
+
background: var(--strand-surface-subtle);
|
|
3082
|
+
border-bottom: 1px solid var(--strand-gray-200);
|
|
3083
|
+
}
|
|
3084
|
+
|
|
3085
|
+
.strand-ref-frame__dot {
|
|
3086
|
+
width: 10px;
|
|
3087
|
+
height: 10px;
|
|
3088
|
+
border-radius: 50%;
|
|
3089
|
+
display: inline-block;
|
|
3090
|
+
flex: none;
|
|
3091
|
+
}
|
|
3092
|
+
|
|
3093
|
+
.strand-ref-frame__title {
|
|
3094
|
+
margin-left: var(--strand-space-3);
|
|
3095
|
+
font-family: var(--strand-font-mono);
|
|
3096
|
+
font-size: 11px;
|
|
3097
|
+
letter-spacing: 0.04em;
|
|
3098
|
+
color: var(--strand-gray-600);
|
|
3099
|
+
}
|
|
3100
|
+
|
|
3101
|
+
.strand-ref-frame__body {
|
|
3102
|
+
position: relative;
|
|
3103
|
+
min-height: 280px;
|
|
3104
|
+
background: var(--strand-surface-elevated);
|
|
3105
|
+
}
|
|
3106
|
+
|
|
3107
|
+
.strand-ref-frame__content {
|
|
3108
|
+
display: flex;
|
|
3109
|
+
align-items: center;
|
|
3110
|
+
justify-content: space-between;
|
|
3111
|
+
gap: var(--strand-space-5);
|
|
3112
|
+
padding: var(--strand-space-8) 36px;
|
|
3113
|
+
transition: filter 180ms var(--strand-ease-out-quart),
|
|
3114
|
+
opacity 180ms var(--strand-ease-out-quart);
|
|
3115
|
+
}
|
|
3116
|
+
|
|
3117
|
+
.strand-ref-frame__content[aria-hidden="true"] {
|
|
3118
|
+
filter: blur(2px);
|
|
3119
|
+
opacity: 0.55;
|
|
3120
|
+
pointer-events: none;
|
|
3121
|
+
}
|
|
3122
|
+
|
|
3123
|
+
.strand-ref-frame__content-head {
|
|
3124
|
+
/* container for overline + heading; no explicit styles */
|
|
3125
|
+
}
|
|
3126
|
+
|
|
3127
|
+
.strand-ref-frame__actions {
|
|
3128
|
+
display: flex;
|
|
3129
|
+
gap: 10px;
|
|
3130
|
+
}
|
|
3131
|
+
|
|
3132
|
+
.strand-ref-frame__overlay {
|
|
3133
|
+
position: absolute;
|
|
3134
|
+
inset: 0;
|
|
3135
|
+
background: rgba(15, 25, 42, 0.45);
|
|
3136
|
+
display: flex;
|
|
3137
|
+
align-items: center;
|
|
3138
|
+
justify-content: center;
|
|
3139
|
+
animation: strand-ref-frame-overlay-in 160ms var(--strand-ease-out-quart) forwards;
|
|
3140
|
+
padding: var(--strand-space-6);
|
|
3141
|
+
}
|
|
3142
|
+
|
|
3143
|
+
@keyframes strand-ref-frame-overlay-in {
|
|
3144
|
+
from { opacity: 0; }
|
|
3145
|
+
to { opacity: 1; }
|
|
3146
|
+
}
|
|
3147
|
+
|
|
3148
|
+
.strand-ref-frame__panel {
|
|
3149
|
+
background: var(--strand-surface-elevated);
|
|
3150
|
+
border-radius: var(--strand-radius-lg);
|
|
3151
|
+
box-shadow: 0 20px 50px rgba(15, 25, 42, 0.25),
|
|
3152
|
+
0 2px 6px rgba(15, 25, 42, 0.12);
|
|
3153
|
+
width: min(440px, 100%);
|
|
3154
|
+
overflow: hidden;
|
|
3155
|
+
animation: strand-ref-frame-panel-in 180ms var(--strand-ease-out-expo) forwards;
|
|
3156
|
+
transform-origin: center;
|
|
3157
|
+
}
|
|
3158
|
+
|
|
3159
|
+
@keyframes strand-ref-frame-panel-in {
|
|
3160
|
+
from { opacity: 0; transform: translateY(8px) scale(0.98); }
|
|
3161
|
+
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
3162
|
+
}
|
|
3163
|
+
|
|
3164
|
+
.strand-ref-frame__panel-header {
|
|
3165
|
+
display: flex;
|
|
3166
|
+
align-items: flex-start;
|
|
3167
|
+
justify-content: space-between;
|
|
3168
|
+
padding: var(--strand-space-5) 22px 14px;
|
|
3169
|
+
gap: var(--strand-space-4);
|
|
3170
|
+
}
|
|
3171
|
+
|
|
3172
|
+
.strand-ref-frame__panel-title {
|
|
3173
|
+
margin: 4px 0 0;
|
|
3174
|
+
font-family: var(--strand-font-sans);
|
|
3175
|
+
font-size: 18px;
|
|
3176
|
+
font-weight: var(--strand-weight-medium);
|
|
3177
|
+
line-height: 1.3;
|
|
3178
|
+
color: var(--strand-blue-midnight);
|
|
3179
|
+
letter-spacing: -0.01em;
|
|
3180
|
+
}
|
|
3181
|
+
|
|
3182
|
+
.strand-ref-frame__panel-close {
|
|
3183
|
+
background: transparent;
|
|
3184
|
+
border: 0;
|
|
3185
|
+
width: 28px;
|
|
3186
|
+
height: 28px;
|
|
3187
|
+
border-radius: var(--strand-radius-md);
|
|
3188
|
+
display: grid;
|
|
3189
|
+
place-items: center;
|
|
3190
|
+
font-size: 18px;
|
|
3191
|
+
line-height: 1;
|
|
3192
|
+
color: var(--strand-gray-500);
|
|
3193
|
+
cursor: pointer;
|
|
3194
|
+
flex: none;
|
|
3195
|
+
transition: background var(--strand-duration-fast) var(--strand-ease-out-quart),
|
|
3196
|
+
color var(--strand-duration-fast) var(--strand-ease-out-quart);
|
|
3197
|
+
}
|
|
3198
|
+
|
|
3199
|
+
.strand-ref-frame__panel-close:hover {
|
|
3200
|
+
background: var(--strand-surface-recessed);
|
|
3201
|
+
color: var(--strand-blue-midnight);
|
|
3202
|
+
}
|
|
3203
|
+
|
|
3204
|
+
.strand-ref-frame__panel-close:focus-visible {
|
|
3205
|
+
outline: 2px solid var(--strand-blue-primary);
|
|
3206
|
+
outline-offset: 2px;
|
|
3207
|
+
}
|
|
3208
|
+
|
|
3209
|
+
.strand-ref-frame__panel-body {
|
|
3210
|
+
padding: 0 22px var(--strand-space-5);
|
|
3211
|
+
font-size: 14px;
|
|
3212
|
+
line-height: 1.55;
|
|
3213
|
+
color: var(--strand-gray-700);
|
|
3214
|
+
}
|
|
3215
|
+
|
|
3216
|
+
.strand-ref-frame__panel-footer {
|
|
3217
|
+
display: flex;
|
|
3218
|
+
justify-content: flex-end;
|
|
3219
|
+
gap: 10px;
|
|
3220
|
+
padding: var(--strand-space-4) 22px var(--strand-space-5);
|
|
3221
|
+
border-top: 1px solid var(--strand-gray-100);
|
|
3222
|
+
background: var(--strand-surface-recessed);
|
|
3223
|
+
}
|
|
3224
|
+
|
|
3225
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3226
|
+
.strand-ref-frame__overlay,
|
|
3227
|
+
.strand-ref-frame__panel {
|
|
3228
|
+
animation: none;
|
|
3229
|
+
}
|
|
3230
|
+
|
|
3231
|
+
.strand-ref-frame__content {
|
|
3232
|
+
transition: none;
|
|
3233
|
+
}
|
|
3234
|
+
}
|
|
3235
|
+
|
|
3236
|
+
|
|
3237
|
+
/* LabGlassStage */
|
|
3238
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3239
|
+
|
|
3240
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3241
|
+
|
|
3242
|
+
/* ══════════════════════════════════════════════════
|
|
3243
|
+
LAB GLASS STAGE (frosted-glass specimen container)
|
|
3244
|
+
══════════════════════════════════════════════════
|
|
3245
|
+
A layered blue-gradient backdrop with an embedded glass
|
|
3246
|
+
panel on top, used by docs pages to demonstrate frosted
|
|
3247
|
+
glass surfaces against a cinematic backdrop. */
|
|
3248
|
+
|
|
3249
|
+
.strand-ref-glass-stage {
|
|
3250
|
+
position: relative;
|
|
3251
|
+
padding: var(--strand-space-10) var(--strand-space-8);
|
|
3252
|
+
border-radius: var(--strand-radius-lg);
|
|
3253
|
+
overflow: hidden;
|
|
3254
|
+
background:
|
|
3255
|
+
radial-gradient(circle at 20% 30%, rgba(59, 142, 246, 0.45) 0%, transparent 55%),
|
|
3256
|
+
radial-gradient(circle at 80% 70%, rgba(20, 184, 166, 0.35) 0%, transparent 55%),
|
|
3257
|
+
linear-gradient(135deg, var(--strand-blue-midnight) 0%, var(--strand-blue-abyss) 100%);
|
|
3258
|
+
}
|
|
3259
|
+
|
|
3260
|
+
.strand-ref-glass-panel {
|
|
3261
|
+
position: relative;
|
|
3262
|
+
padding: 22px var(--strand-space-6);
|
|
3263
|
+
border-radius: var(--strand-radius-lg);
|
|
3264
|
+
background: rgba(15, 25, 42, 0.42);
|
|
3265
|
+
-webkit-backdrop-filter: blur(14px) saturate(1.2);
|
|
3266
|
+
backdrop-filter: blur(14px) saturate(1.2);
|
|
3267
|
+
border: 1px solid rgba(255, 255, 255, 0.16);
|
|
3268
|
+
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.35),
|
|
3269
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.12);
|
|
3270
|
+
color: var(--strand-on-blue-primary);
|
|
3271
|
+
}
|
|
3272
|
+
|
|
3273
|
+
|
|
3274
|
+
/* LabRevealStage */
|
|
3275
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3276
|
+
|
|
3277
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3278
|
+
|
|
3279
|
+
/* ══════════════════════════════════════════════════
|
|
3280
|
+
LAB REVEAL STAGE (staggered entry animation specimen)
|
|
3281
|
+
══════════════════════════════════════════════════
|
|
3282
|
+
Demonstrates the Principle 7 alive-signal staggered reveal
|
|
3283
|
+
pattern. Four lines animate in at 0 / 180 / 360 / 540 ms.
|
|
3284
|
+
Consumers remount the stage (via a key/ref) to replay. */
|
|
3285
|
+
|
|
3286
|
+
.strand-ref-reveal-stage {
|
|
3287
|
+
display: flex;
|
|
3288
|
+
flex-direction: column;
|
|
3289
|
+
gap: 10px;
|
|
3290
|
+
padding: var(--strand-space-5) 0;
|
|
3291
|
+
}
|
|
3292
|
+
|
|
3293
|
+
.strand-ref-reveal-line {
|
|
3294
|
+
opacity: 0;
|
|
3295
|
+
transform: translateY(8px);
|
|
3296
|
+
animation: strand-ref-reveal-in 2400ms var(--strand-ease-out-quart) forwards;
|
|
3297
|
+
font-family: var(--strand-font-mono);
|
|
3298
|
+
font-size: 12px;
|
|
3299
|
+
letter-spacing: 0.04em;
|
|
3300
|
+
color: var(--strand-blue-midnight);
|
|
3301
|
+
padding: 10px 14px;
|
|
3302
|
+
background: var(--strand-surface-elevated);
|
|
3303
|
+
border-left: 2px solid var(--strand-blue-primary);
|
|
3304
|
+
}
|
|
3305
|
+
|
|
3306
|
+
.strand-ref-reveal-line:nth-child(1) { animation-delay: 0ms; }
|
|
3307
|
+
.strand-ref-reveal-line:nth-child(2) { animation-delay: 180ms; }
|
|
3308
|
+
.strand-ref-reveal-line:nth-child(3) { animation-delay: 360ms; }
|
|
3309
|
+
.strand-ref-reveal-line:nth-child(4) { animation-delay: 540ms; }
|
|
3310
|
+
|
|
3311
|
+
@keyframes strand-ref-reveal-in {
|
|
3312
|
+
0% { opacity: 0; transform: translateY(8px); }
|
|
3313
|
+
25% { opacity: 1; transform: translateY(0); }
|
|
3314
|
+
85% { opacity: 1; transform: translateY(0); }
|
|
3315
|
+
100% { opacity: 1; transform: translateY(0); }
|
|
3316
|
+
}
|
|
3317
|
+
|
|
3318
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3319
|
+
.strand-ref-reveal-line {
|
|
3320
|
+
animation: none;
|
|
3321
|
+
opacity: 1;
|
|
3322
|
+
transform: none;
|
|
3323
|
+
}
|
|
3324
|
+
}
|
|
3325
|
+
|
|
3326
|
+
|
|
3327
|
+
/* LabShell */
|
|
3328
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3329
|
+
|
|
3330
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3331
|
+
|
|
3332
|
+
/* ══════════════════════════════════════════════════
|
|
3333
|
+
LAB SHELL / COMPONENT-REFERENCE PAGE CHROME
|
|
3334
|
+
══════════════════════════════════════════════════
|
|
3335
|
+
A named primitive family for a component-reference page
|
|
3336
|
+
layout: sticky sidebar + scrollable main + header + section
|
|
3337
|
+
+ example. Used by the Strand docs site itself, by any
|
|
3338
|
+
consumer building a component showcase, and by the DS Strand
|
|
3339
|
+
lab. 40+ classes map 1:1 to the handoff's showcase-* chrome.
|
|
3340
|
+
|
|
3341
|
+
Computed styles match the baseline at viewport 1440 per
|
|
3342
|
+
`.strand-handoff-render/ledger/focused.json`.
|
|
3343
|
+
|
|
3344
|
+
The sidebar sticky-top offset is set via the CSS custom
|
|
3345
|
+
property `--strand-ref-sticky-top` (default 0) so consumers
|
|
3346
|
+
can push the sidebar below fixed page chrome (e.g. a glass
|
|
3347
|
+
nav) without hardcoding any DS-specific value. Set on the
|
|
3348
|
+
shell root: `<div class="strand-ref-shell"
|
|
3349
|
+
style="--strand-ref-sticky-top: var(--strand-nav-height);">`.
|
|
3350
|
+
══════════════════════════════════════════════════ */
|
|
3351
|
+
|
|
3352
|
+
/* Shell root: two-column grid, sidebar left, main right. */
|
|
3353
|
+
.strand-ref-shell {
|
|
3354
|
+
display: grid;
|
|
3355
|
+
grid-template-columns: 256px 1fr;
|
|
3356
|
+
min-height: 100vh;
|
|
3357
|
+
}
|
|
3358
|
+
|
|
3359
|
+
/* Sidebar: sticky column, full viewport height, hairline right border. */
|
|
3360
|
+
.strand-ref-shell__sidebar {
|
|
3361
|
+
position: sticky;
|
|
3362
|
+
top: var(--strand-ref-sticky-top, 0);
|
|
3363
|
+
height: 100vh;
|
|
3364
|
+
background: var(--strand-surface-elevated);
|
|
3365
|
+
border-right: 1px solid var(--strand-gray-200);
|
|
3366
|
+
display: flex;
|
|
3367
|
+
flex-direction: column;
|
|
3368
|
+
overflow: hidden;
|
|
3369
|
+
}
|
|
3370
|
+
|
|
3371
|
+
/* Sidebar head: fixed top block with brand and hairline bottom. */
|
|
3372
|
+
.strand-ref-shell__sidebar-head {
|
|
3373
|
+
padding: var(--strand-space-6) var(--strand-space-5) 18px;
|
|
3374
|
+
border-bottom: 1px solid var(--strand-gray-100);
|
|
3375
|
+
flex: none;
|
|
3376
|
+
background: var(--strand-surface-elevated);
|
|
3377
|
+
}
|
|
3378
|
+
|
|
3379
|
+
/* Sidebar scroll region: groups of nav links, overflow-y auto. */
|
|
3380
|
+
.strand-ref-shell__sidebar-scroll {
|
|
3381
|
+
flex: 1;
|
|
3382
|
+
min-height: 0;
|
|
3383
|
+
overflow-y: auto;
|
|
3384
|
+
overflow-anchor: none;
|
|
3385
|
+
overscroll-behavior: contain;
|
|
3386
|
+
padding: var(--strand-space-4) var(--strand-space-5) var(--strand-space-6);
|
|
3387
|
+
display: flex;
|
|
3388
|
+
flex-direction: column;
|
|
3389
|
+
gap: 18px;
|
|
3390
|
+
}
|
|
3391
|
+
|
|
3392
|
+
/* Brand row: mark + title + sub stacked horizontally. */
|
|
3393
|
+
.strand-ref-shell__brand {
|
|
3394
|
+
display: flex;
|
|
3395
|
+
align-items: center;
|
|
3396
|
+
gap: var(--strand-space-3);
|
|
3397
|
+
}
|
|
3398
|
+
|
|
3399
|
+
.strand-ref-shell__brand-mark {
|
|
3400
|
+
width: 36px;
|
|
3401
|
+
height: 36px;
|
|
3402
|
+
border-radius: var(--strand-radius-md);
|
|
3403
|
+
background: var(--strand-blue-midnight);
|
|
3404
|
+
color: var(--strand-on-blue-primary);
|
|
3405
|
+
display: grid;
|
|
3406
|
+
place-items: center;
|
|
3407
|
+
font-family: var(--strand-font-mono);
|
|
3408
|
+
font-weight: var(--strand-weight-semibold);
|
|
3409
|
+
font-size: 13px;
|
|
3410
|
+
letter-spacing: 0.04em;
|
|
3411
|
+
}
|
|
3412
|
+
|
|
3413
|
+
.strand-ref-shell__brand-title {
|
|
3414
|
+
font-family: var(--strand-font-mono);
|
|
3415
|
+
font-weight: var(--strand-weight-medium);
|
|
3416
|
+
color: var(--strand-blue-midnight);
|
|
3417
|
+
font-size: 15px;
|
|
3418
|
+
}
|
|
3419
|
+
|
|
3420
|
+
.strand-ref-shell__brand-sub {
|
|
3421
|
+
font-family: var(--strand-font-mono);
|
|
3422
|
+
font-size: 10px;
|
|
3423
|
+
text-transform: uppercase;
|
|
3424
|
+
letter-spacing: var(--strand-tracking-ultra);
|
|
3425
|
+
color: var(--strand-gray-500);
|
|
3426
|
+
}
|
|
3427
|
+
|
|
3428
|
+
/* Sidebar nav group: divider between groups, label + list. */
|
|
3429
|
+
.strand-ref-shell__group {
|
|
3430
|
+
display: flex;
|
|
3431
|
+
flex-direction: column;
|
|
3432
|
+
gap: var(--strand-space-1);
|
|
3433
|
+
padding-top: 10px;
|
|
3434
|
+
border-top: 1px solid var(--strand-gray-100);
|
|
3435
|
+
}
|
|
3436
|
+
|
|
3437
|
+
.strand-ref-shell__group:first-of-type {
|
|
3438
|
+
border-top: 0;
|
|
3439
|
+
padding-top: 0;
|
|
3440
|
+
}
|
|
3441
|
+
|
|
3442
|
+
.strand-ref-shell__group-label {
|
|
3443
|
+
font-family: var(--strand-font-mono);
|
|
3444
|
+
font-size: 10px;
|
|
3445
|
+
letter-spacing: 0.18em;
|
|
3446
|
+
text-transform: uppercase;
|
|
3447
|
+
color: var(--strand-blue-midnight);
|
|
3448
|
+
font-weight: var(--strand-weight-semibold);
|
|
3449
|
+
padding: 6px 10px 8px;
|
|
3450
|
+
}
|
|
3451
|
+
|
|
3452
|
+
.strand-ref-shell__group-list {
|
|
3453
|
+
display: flex;
|
|
3454
|
+
flex-direction: column;
|
|
3455
|
+
gap: 1px;
|
|
3456
|
+
}
|
|
3457
|
+
|
|
3458
|
+
.strand-ref-shell__group-link {
|
|
3459
|
+
display: flex;
|
|
3460
|
+
align-items: center;
|
|
3461
|
+
gap: 10px;
|
|
3462
|
+
padding: 7px 10px;
|
|
3463
|
+
border-radius: var(--strand-radius-md);
|
|
3464
|
+
font-family: var(--strand-font-sans);
|
|
3465
|
+
font-size: 13px;
|
|
3466
|
+
color: var(--strand-gray-700);
|
|
3467
|
+
text-decoration: none;
|
|
3468
|
+
transition: background var(--strand-duration-fast) var(--strand-ease-out-quart),
|
|
3469
|
+
color var(--strand-duration-fast) var(--strand-ease-out-quart);
|
|
3470
|
+
}
|
|
3471
|
+
|
|
3472
|
+
.strand-ref-shell__group-link:hover {
|
|
3473
|
+
background: var(--strand-surface-recessed);
|
|
3474
|
+
color: var(--strand-blue-midnight);
|
|
3475
|
+
}
|
|
3476
|
+
|
|
3477
|
+
.strand-ref-shell__group-dot {
|
|
3478
|
+
width: 4px;
|
|
3479
|
+
height: 4px;
|
|
3480
|
+
border-radius: 50%;
|
|
3481
|
+
background: var(--strand-gray-300);
|
|
3482
|
+
flex: none;
|
|
3483
|
+
}
|
|
3484
|
+
|
|
3485
|
+
.strand-ref-shell__group-link:hover .strand-ref-shell__group-dot {
|
|
3486
|
+
background: var(--strand-blue-primary);
|
|
3487
|
+
}
|
|
3488
|
+
|
|
3489
|
+
/* Main: scrolling column, padding 56px 64px 96px, clamped width. */
|
|
3490
|
+
.strand-ref-shell__main {
|
|
3491
|
+
padding: 56px var(--strand-space-16) 96px;
|
|
3492
|
+
max-width: 1120px;
|
|
3493
|
+
}
|
|
3494
|
+
|
|
3495
|
+
/* Header: h1 + lead + metrics row, bottom hairline. */
|
|
3496
|
+
.strand-ref-header {
|
|
3497
|
+
padding-bottom: var(--strand-space-10);
|
|
3498
|
+
border-bottom: 1px solid var(--strand-gray-200);
|
|
3499
|
+
margin-bottom: var(--strand-space-8);
|
|
3500
|
+
}
|
|
3501
|
+
|
|
3502
|
+
.strand-ref-header__title {
|
|
3503
|
+
font-family: var(--strand-font-sans);
|
|
3504
|
+
font-weight: var(--strand-weight-light);
|
|
3505
|
+
letter-spacing: var(--strand-tracking-tight);
|
|
3506
|
+
color: var(--strand-blue-midnight);
|
|
3507
|
+
font-size: 40px;
|
|
3508
|
+
margin: var(--strand-space-3) 0 0;
|
|
3509
|
+
}
|
|
3510
|
+
|
|
3511
|
+
.strand-ref-header__lead {
|
|
3512
|
+
max-width: 620px;
|
|
3513
|
+
margin: var(--strand-space-4) 0 0;
|
|
3514
|
+
font-family: var(--strand-font-sans);
|
|
3515
|
+
font-size: 20px;
|
|
3516
|
+
color: var(--strand-gray-500);
|
|
3517
|
+
line-height: 1.5;
|
|
3518
|
+
}
|
|
3519
|
+
|
|
3520
|
+
.strand-ref-header__meta {
|
|
3521
|
+
display: grid;
|
|
3522
|
+
grid-template-columns: repeat(4, minmax(0, auto));
|
|
3523
|
+
gap: 48px;
|
|
3524
|
+
margin: var(--strand-space-8) 0 0;
|
|
3525
|
+
justify-content: start;
|
|
3526
|
+
}
|
|
3527
|
+
|
|
3528
|
+
.strand-ref-header__meta-item {
|
|
3529
|
+
display: flex;
|
|
3530
|
+
flex-direction: column;
|
|
3531
|
+
gap: var(--strand-space-2);
|
|
3532
|
+
margin: 0;
|
|
3533
|
+
}
|
|
3534
|
+
|
|
3535
|
+
.strand-ref-header__meta-label {
|
|
3536
|
+
font-family: var(--strand-font-mono);
|
|
3537
|
+
font-size: 10px;
|
|
3538
|
+
letter-spacing: 0.14em;
|
|
3539
|
+
text-transform: uppercase;
|
|
3540
|
+
color: var(--strand-gray-500);
|
|
3541
|
+
margin: 0;
|
|
3542
|
+
}
|
|
3543
|
+
|
|
3544
|
+
.strand-ref-header__meta-value {
|
|
3545
|
+
font-family: var(--strand-font-sans);
|
|
3546
|
+
font-size: 22px;
|
|
3547
|
+
font-weight: var(--strand-weight-light);
|
|
3548
|
+
letter-spacing: -0.01em;
|
|
3549
|
+
color: var(--strand-blue-midnight);
|
|
3550
|
+
margin: 0;
|
|
3551
|
+
line-height: 1.2;
|
|
3552
|
+
}
|
|
3553
|
+
|
|
3554
|
+
/* Taxonomy explainer block: overline + definition list of terms. */
|
|
3555
|
+
.strand-ref-taxonomy {
|
|
3556
|
+
margin-top: var(--strand-space-6);
|
|
3557
|
+
padding: var(--strand-space-5) 22px;
|
|
3558
|
+
background: var(--strand-surface-recessed);
|
|
3559
|
+
border: 1px solid var(--strand-gray-200);
|
|
3560
|
+
border-radius: var(--strand-radius-lg);
|
|
3561
|
+
max-width: 720px;
|
|
3562
|
+
}
|
|
3563
|
+
|
|
3564
|
+
.strand-ref-taxonomy__title {
|
|
3565
|
+
font-family: var(--strand-font-mono);
|
|
3566
|
+
font-size: 10px;
|
|
3567
|
+
letter-spacing: 0.18em;
|
|
3568
|
+
text-transform: uppercase;
|
|
3569
|
+
color: var(--strand-blue-midnight);
|
|
3570
|
+
font-weight: var(--strand-weight-semibold);
|
|
3571
|
+
margin-bottom: 10px;
|
|
3572
|
+
}
|
|
3573
|
+
|
|
3574
|
+
.strand-ref-taxonomy__list {
|
|
3575
|
+
margin: 0;
|
|
3576
|
+
display: grid;
|
|
3577
|
+
grid-template-columns: 1fr;
|
|
3578
|
+
gap: var(--strand-space-2);
|
|
3579
|
+
}
|
|
3580
|
+
|
|
3581
|
+
.strand-ref-taxonomy__list > div {
|
|
3582
|
+
display: grid;
|
|
3583
|
+
grid-template-columns: 160px 1fr;
|
|
3584
|
+
gap: 14px;
|
|
3585
|
+
align-items: baseline;
|
|
3586
|
+
}
|
|
3587
|
+
|
|
3588
|
+
.strand-ref-taxonomy__list dt {
|
|
3589
|
+
font-family: var(--strand-font-mono);
|
|
3590
|
+
font-size: 11px;
|
|
3591
|
+
letter-spacing: 0.08em;
|
|
3592
|
+
text-transform: uppercase;
|
|
3593
|
+
color: var(--strand-blue-primary);
|
|
3594
|
+
font-weight: var(--strand-weight-semibold);
|
|
3595
|
+
margin: 0;
|
|
3596
|
+
}
|
|
3597
|
+
|
|
3598
|
+
.strand-ref-taxonomy__list dd {
|
|
3599
|
+
margin: 0;
|
|
3600
|
+
font-size: 13px;
|
|
3601
|
+
color: var(--strand-gray-700);
|
|
3602
|
+
line-height: 1.5;
|
|
3603
|
+
}
|
|
3604
|
+
|
|
3605
|
+
.strand-ref-taxonomy__list em {
|
|
3606
|
+
font-style: italic;
|
|
3607
|
+
color: var(--strand-blue-midnight);
|
|
3608
|
+
}
|
|
3609
|
+
|
|
3610
|
+
/* Section: vertical block with hairline bottom. */
|
|
3611
|
+
.strand-ref-section {
|
|
3612
|
+
padding: var(--strand-space-12) 0;
|
|
3613
|
+
border-bottom: 1px solid var(--strand-gray-200);
|
|
3614
|
+
scroll-margin-top: var(--strand-space-4);
|
|
3615
|
+
}
|
|
3616
|
+
|
|
3617
|
+
.strand-ref-section:last-child {
|
|
3618
|
+
border-bottom: 0;
|
|
3619
|
+
}
|
|
3620
|
+
|
|
3621
|
+
.strand-ref-section__head {
|
|
3622
|
+
margin-bottom: var(--strand-space-8);
|
|
3623
|
+
display: flex;
|
|
3624
|
+
align-items: baseline;
|
|
3625
|
+
justify-content: space-between;
|
|
3626
|
+
gap: var(--strand-space-6);
|
|
3627
|
+
flex-wrap: wrap;
|
|
3628
|
+
}
|
|
3629
|
+
|
|
3630
|
+
.strand-ref-section__head h2 {
|
|
3631
|
+
margin: var(--strand-space-2) 0 0;
|
|
3632
|
+
font-weight: var(--strand-weight-light);
|
|
3633
|
+
letter-spacing: var(--strand-tracking-tight);
|
|
3634
|
+
color: var(--strand-blue-midnight);
|
|
3635
|
+
font-size: 28px;
|
|
3636
|
+
}
|
|
3637
|
+
|
|
3638
|
+
.strand-ref-section__head-note {
|
|
3639
|
+
font-family: var(--strand-font-mono);
|
|
3640
|
+
font-size: 10px;
|
|
3641
|
+
letter-spacing: var(--strand-tracking-ultra);
|
|
3642
|
+
text-transform: uppercase;
|
|
3643
|
+
color: var(--strand-gray-500);
|
|
3644
|
+
}
|
|
3645
|
+
|
|
3646
|
+
.strand-ref-section__body {
|
|
3647
|
+
display: flex;
|
|
3648
|
+
flex-direction: column;
|
|
3649
|
+
gap: var(--strand-space-8);
|
|
3650
|
+
}
|
|
3651
|
+
|
|
3652
|
+
/* Example: a single component specimen with meta column + demo panel. */
|
|
3653
|
+
.strand-ref-example {
|
|
3654
|
+
display: grid;
|
|
3655
|
+
grid-template-columns: 200px 1fr;
|
|
3656
|
+
gap: 28px;
|
|
3657
|
+
align-items: start;
|
|
3658
|
+
}
|
|
3659
|
+
|
|
3660
|
+
.strand-ref-example__meta {
|
|
3661
|
+
padding-top: 6px;
|
|
3662
|
+
}
|
|
3663
|
+
|
|
3664
|
+
.strand-ref-example__label {
|
|
3665
|
+
font-family: var(--strand-font-sans);
|
|
3666
|
+
font-size: 13px;
|
|
3667
|
+
font-weight: var(--strand-weight-medium);
|
|
3668
|
+
color: var(--strand-blue-midnight);
|
|
3669
|
+
margin-bottom: 6px;
|
|
3670
|
+
}
|
|
3671
|
+
|
|
3672
|
+
.strand-ref-example__code {
|
|
3673
|
+
font-family: var(--strand-font-mono);
|
|
3674
|
+
font-size: 10px;
|
|
3675
|
+
letter-spacing: 0.04em;
|
|
3676
|
+
color: var(--strand-gray-500);
|
|
3677
|
+
display: block;
|
|
3678
|
+
line-height: 1.5;
|
|
3679
|
+
}
|
|
3680
|
+
|
|
3681
|
+
.strand-ref-example__demo {
|
|
3682
|
+
background: var(--strand-surface-elevated);
|
|
3683
|
+
border: 1px solid var(--strand-gray-200);
|
|
3684
|
+
border-radius: var(--strand-radius-lg);
|
|
3685
|
+
/* 24px 28px: token 24px (space-6) + literal 28px chrome value (no token match) */
|
|
3686
|
+
padding: var(--strand-space-6) 28px;
|
|
3687
|
+
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.03);
|
|
3688
|
+
}
|
|
3689
|
+
|
|
3690
|
+
.strand-ref-example__demo--pad-none {
|
|
3691
|
+
padding: 0;
|
|
3692
|
+
overflow: hidden;
|
|
3693
|
+
}
|
|
3694
|
+
|
|
3695
|
+
.strand-ref-example__demo--recessed {
|
|
3696
|
+
background: var(--strand-surface-recessed);
|
|
3697
|
+
}
|
|
3698
|
+
|
|
3699
|
+
.strand-ref-example__caption {
|
|
3700
|
+
margin-top: var(--strand-space-2);
|
|
3701
|
+
font-size: 12px;
|
|
3702
|
+
line-height: 1.55;
|
|
3703
|
+
color: var(--strand-gray-500);
|
|
3704
|
+
max-width: 560px;
|
|
3705
|
+
}
|
|
3706
|
+
|
|
3707
|
+
/* Responsive: collapse to single column at 1040, further adjust at 560. */
|
|
3708
|
+
@media (max-width: 1040px) {
|
|
3709
|
+
.strand-ref-shell {
|
|
3710
|
+
grid-template-columns: 1fr;
|
|
3711
|
+
}
|
|
3712
|
+
|
|
3713
|
+
.strand-ref-shell__sidebar {
|
|
3714
|
+
position: static;
|
|
3715
|
+
height: auto;
|
|
3716
|
+
border-right: 0;
|
|
3717
|
+
border-bottom: 1px solid var(--strand-gray-200);
|
|
3718
|
+
}
|
|
3719
|
+
|
|
3720
|
+
.strand-ref-shell__main {
|
|
3721
|
+
padding: var(--strand-space-8) var(--strand-space-6) var(--strand-space-16);
|
|
3722
|
+
}
|
|
3723
|
+
|
|
3724
|
+
.strand-ref-example {
|
|
3725
|
+
grid-template-columns: 1fr;
|
|
3726
|
+
}
|
|
3727
|
+
|
|
3728
|
+
.strand-ref-header__meta {
|
|
3729
|
+
grid-template-columns: 1fr 1fr;
|
|
3730
|
+
gap: var(--strand-space-6) var(--strand-space-8);
|
|
3731
|
+
}
|
|
3732
|
+
}
|
|
3733
|
+
|
|
3734
|
+
@media (max-width: 560px) {
|
|
3735
|
+
.strand-ref-header__meta {
|
|
3736
|
+
grid-template-columns: 1fr;
|
|
3737
|
+
gap: 18px;
|
|
3738
|
+
}
|
|
3739
|
+
}
|
|
3740
|
+
|
|
3741
|
+
|
|
3742
|
+
/* LabTip */
|
|
3743
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3744
|
+
|
|
3745
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
3746
|
+
|
|
3747
|
+
/* ══════════════════════════════════════════════════
|
|
3748
|
+
LAB TIP (pure-CSS tooltip specimen)
|
|
3749
|
+
══════════════════════════════════════════════════
|
|
3750
|
+
A hover/focus-driven tooltip for QA specimens on docs
|
|
3751
|
+
pages. This is NOT the production Strand Tooltip (which is
|
|
3752
|
+
JS-driven with collision detection); it is a static
|
|
3753
|
+
specimen showing four fixed positions simultaneously.
|
|
3754
|
+
|
|
3755
|
+
Use the --pinned modifier to show the bubble without
|
|
3756
|
+
hover/focus (useful for before/after screenshots). */
|
|
3757
|
+
|
|
3758
|
+
.strand-ref-tip {
|
|
3759
|
+
position: relative;
|
|
3760
|
+
display: inline-flex;
|
|
3761
|
+
}
|
|
3762
|
+
|
|
3763
|
+
.strand-ref-tip__bubble {
|
|
3764
|
+
position: absolute;
|
|
3765
|
+
z-index: 2;
|
|
3766
|
+
padding: 6px 10px;
|
|
3767
|
+
border-radius: var(--strand-radius-sm);
|
|
3768
|
+
background: var(--strand-blue-midnight);
|
|
3769
|
+
color: var(--strand-on-blue-primary);
|
|
3770
|
+
font-family: var(--strand-font-mono);
|
|
3771
|
+
font-size: 11px;
|
|
3772
|
+
letter-spacing: 0.04em;
|
|
3773
|
+
white-space: nowrap;
|
|
3774
|
+
opacity: 0;
|
|
3775
|
+
pointer-events: none;
|
|
3776
|
+
transition: opacity var(--strand-duration-fast) var(--strand-ease-out-quart),
|
|
3777
|
+
transform var(--strand-duration-fast) var(--strand-ease-out-quart);
|
|
3778
|
+
}
|
|
3779
|
+
|
|
3780
|
+
.strand-ref-tip:hover .strand-ref-tip__bubble,
|
|
3781
|
+
.strand-ref-tip:focus-within .strand-ref-tip__bubble,
|
|
3782
|
+
.strand-ref-tip--pinned .strand-ref-tip__bubble {
|
|
3783
|
+
opacity: 1;
|
|
3784
|
+
}
|
|
2806
3785
|
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
3786
|
+
.strand-ref-tip__bubble--top {
|
|
3787
|
+
left: 50%;
|
|
3788
|
+
bottom: calc(100% + 8px);
|
|
3789
|
+
transform: translateX(-50%) translateY(4px);
|
|
3790
|
+
}
|
|
2810
3791
|
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
3792
|
+
.strand-ref-tip__bubble--bottom {
|
|
3793
|
+
left: 50%;
|
|
3794
|
+
top: calc(100% + 8px);
|
|
3795
|
+
transform: translateX(-50%) translateY(-4px);
|
|
3796
|
+
}
|
|
2814
3797
|
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
3798
|
+
.strand-ref-tip__bubble--left {
|
|
3799
|
+
right: calc(100% + 8px);
|
|
3800
|
+
top: 50%;
|
|
3801
|
+
transform: translateX(4px) translateY(-50%);
|
|
3802
|
+
}
|
|
2818
3803
|
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
3804
|
+
.strand-ref-tip__bubble--right {
|
|
3805
|
+
left: calc(100% + 8px);
|
|
3806
|
+
top: 50%;
|
|
3807
|
+
transform: translateX(-4px) translateY(-50%);
|
|
3808
|
+
}
|
|
2823
3809
|
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
3810
|
+
.strand-ref-tip:hover .strand-ref-tip__bubble--top,
|
|
3811
|
+
.strand-ref-tip--pinned .strand-ref-tip__bubble--top,
|
|
3812
|
+
.strand-ref-tip:focus-within .strand-ref-tip__bubble--top {
|
|
3813
|
+
transform: translateX(-50%) translateY(0);
|
|
2827
3814
|
}
|
|
2828
3815
|
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
still readable, just static. */
|
|
3816
|
+
.strand-ref-tip:hover .strand-ref-tip__bubble--bottom,
|
|
3817
|
+
.strand-ref-tip--pinned .strand-ref-tip__bubble--bottom,
|
|
3818
|
+
.strand-ref-tip:focus-within .strand-ref-tip__bubble--bottom {
|
|
3819
|
+
transform: translateX(-50%) translateY(0);
|
|
3820
|
+
}
|
|
2835
3821
|
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
3822
|
+
.strand-ref-tip:hover .strand-ref-tip__bubble--left,
|
|
3823
|
+
.strand-ref-tip--pinned .strand-ref-tip__bubble--left,
|
|
3824
|
+
.strand-ref-tip:focus-within .strand-ref-tip__bubble--left {
|
|
3825
|
+
transform: translateX(0) translateY(-50%);
|
|
3826
|
+
}
|
|
2841
3827
|
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
3828
|
+
.strand-ref-tip:hover .strand-ref-tip__bubble--right,
|
|
3829
|
+
.strand-ref-tip--pinned .strand-ref-tip__bubble--right,
|
|
3830
|
+
.strand-ref-tip:focus-within .strand-ref-tip__bubble--right {
|
|
3831
|
+
transform: translateX(0) translateY(-50%);
|
|
3832
|
+
}
|
|
2845
3833
|
|
|
2846
|
-
|
|
2847
|
-
|
|
3834
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3835
|
+
.strand-ref-tip__bubble {
|
|
3836
|
+
transition: none;
|
|
2848
3837
|
}
|
|
3838
|
+
}
|
|
2849
3839
|
|
|
2850
|
-
.strand-map-pin::before,
|
|
2851
|
-
.strand-map-pin::after {
|
|
2852
|
-
animation: none;
|
|
2853
|
-
}
|
|
2854
3840
|
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
}
|
|
3841
|
+
/* LabUtilCell */
|
|
3842
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
2858
3843
|
|
|
2859
|
-
|
|
2860
|
-
.strand-map-pin:hover::after {
|
|
2861
|
-
animation: none;
|
|
2862
|
-
}
|
|
3844
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
2863
3845
|
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
3846
|
+
/* ══════════════════════════════════════════════════
|
|
3847
|
+
LAB UTIL CELL (utility-class demo tile)
|
|
3848
|
+
══════════════════════════════════════════════════
|
|
3849
|
+
Demo tile that shows a single utility class in action
|
|
3850
|
+
(e.g. .strand-mt-4, .strand-mx-auto). The row container
|
|
3851
|
+
arranges cells horizontally; each cell has a code label
|
|
3852
|
+
+ demo area + optional caption. */
|
|
2867
3853
|
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
.strand-detail-panel.is-open .strand-detail-panel__meta,
|
|
2875
|
-
.strand-detail-panel--open .strand-detail-panel__meta,
|
|
2876
|
-
.strand-detail-panel.open .strand-detail-panel__meta,
|
|
2877
|
-
.strand-detail-panel.is-open .strand-detail-panel__salary,
|
|
2878
|
-
.strand-detail-panel--open .strand-detail-panel__salary,
|
|
2879
|
-
.strand-detail-panel.open .strand-detail-panel__salary,
|
|
2880
|
-
.strand-detail-panel.is-open .strand-detail-panel__cta,
|
|
2881
|
-
.strand-detail-panel--open .strand-detail-panel__cta,
|
|
2882
|
-
.strand-detail-panel.open .strand-detail-panel__cta,
|
|
2883
|
-
.strand-detail-panel.is-open .strand-detail-panel__source,
|
|
2884
|
-
.strand-detail-panel--open .strand-detail-panel__source,
|
|
2885
|
-
.strand-detail-panel.open .strand-detail-panel__source {
|
|
2886
|
-
animation: none;
|
|
2887
|
-
}
|
|
3854
|
+
.strand-ref-util-row {
|
|
3855
|
+
display: flex;
|
|
3856
|
+
align-items: stretch;
|
|
3857
|
+
gap: 18px;
|
|
3858
|
+
flex-wrap: wrap;
|
|
3859
|
+
}
|
|
2888
3860
|
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
3861
|
+
.strand-ref-util-cell {
|
|
3862
|
+
display: flex;
|
|
3863
|
+
flex-direction: column;
|
|
3864
|
+
gap: 10px;
|
|
3865
|
+
/* 14px 16px: specimen chrome literal, no token match for 14px */
|
|
3866
|
+
padding: 14px var(--strand-space-4);
|
|
3867
|
+
background: var(--strand-surface-recessed);
|
|
3868
|
+
border: 1px solid var(--strand-gray-200);
|
|
3869
|
+
border-radius: var(--strand-radius-md);
|
|
3870
|
+
min-width: 180px;
|
|
3871
|
+
flex: 1;
|
|
3872
|
+
}
|
|
2892
3873
|
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
3874
|
+
.strand-ref-util-cell__code {
|
|
3875
|
+
font-family: var(--strand-font-mono);
|
|
3876
|
+
font-size: 10px;
|
|
3877
|
+
letter-spacing: 0.06em;
|
|
3878
|
+
color: var(--strand-blue-primary);
|
|
3879
|
+
font-weight: var(--strand-weight-medium);
|
|
3880
|
+
}
|
|
2896
3881
|
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
3882
|
+
.strand-ref-util-cell__caption {
|
|
3883
|
+
font-family: var(--strand-font-mono);
|
|
3884
|
+
font-size: 10px;
|
|
3885
|
+
letter-spacing: 0.04em;
|
|
3886
|
+
color: var(--strand-gray-500);
|
|
3887
|
+
}
|
|
2901
3888
|
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
3889
|
+
.strand-ref-util-cell__demo {
|
|
3890
|
+
background: var(--strand-surface-elevated);
|
|
3891
|
+
border: 1px dashed var(--strand-gray-300);
|
|
3892
|
+
border-radius: var(--strand-radius-sm);
|
|
3893
|
+
padding: 0;
|
|
3894
|
+
display: flex;
|
|
3895
|
+
flex-direction: column;
|
|
3896
|
+
}
|
|
3897
|
+
|
|
3898
|
+
.strand-ref-util-cell__block {
|
|
3899
|
+
background: var(--strand-blue-midnight);
|
|
3900
|
+
color: var(--strand-on-blue-primary);
|
|
3901
|
+
padding: 6px 10px;
|
|
3902
|
+
font-family: var(--strand-font-mono);
|
|
3903
|
+
font-size: 11px;
|
|
3904
|
+
letter-spacing: 0.04em;
|
|
3905
|
+
display: inline-block;
|
|
3906
|
+
align-self: flex-start;
|
|
2905
3907
|
}
|
|
2906
3908
|
|
|
2907
3909
|
|
|
@@ -4172,6 +5174,53 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
4172
5174
|
}
|
|
4173
5175
|
|
|
4174
5176
|
|
|
5177
|
+
/* Swatch */
|
|
5178
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
5179
|
+
|
|
5180
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
5181
|
+
|
|
5182
|
+
/* ══════════════════════════════════════════════════
|
|
5183
|
+
SWATCH (color specimen for docs surfaces)
|
|
5184
|
+
══════════════════════════════════════════════════
|
|
5185
|
+
A single color tile rendered in a grid of swatches on a
|
|
5186
|
+
design-token documentation page. Background and text colors
|
|
5187
|
+
are applied inline via the consumer (because tone varies per
|
|
5188
|
+
swatch). Base chrome (border, min-height, internal layout)
|
|
5189
|
+
is CSS-driven. Grid container is a sibling primitive. */
|
|
5190
|
+
|
|
5191
|
+
.strand-swatch-grid {
|
|
5192
|
+
display: grid;
|
|
5193
|
+
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
|
5194
|
+
gap: 10px;
|
|
5195
|
+
}
|
|
5196
|
+
|
|
5197
|
+
.strand-swatch {
|
|
5198
|
+
display: flex;
|
|
5199
|
+
flex-direction: column;
|
|
5200
|
+
gap: var(--strand-space-1);
|
|
5201
|
+
/* 14px 14px 12px: specimen chrome literal, no token scale match */
|
|
5202
|
+
padding: 14px 14px 12px;
|
|
5203
|
+
border-radius: var(--strand-radius-md);
|
|
5204
|
+
border: 1px solid var(--strand-gray-200);
|
|
5205
|
+
min-height: 92px;
|
|
5206
|
+
}
|
|
5207
|
+
|
|
5208
|
+
.strand-swatch__name {
|
|
5209
|
+
font-family: var(--strand-font-mono);
|
|
5210
|
+
font-size: 10px;
|
|
5211
|
+
letter-spacing: var(--strand-tracking-widest);
|
|
5212
|
+
text-transform: uppercase;
|
|
5213
|
+
font-weight: var(--strand-weight-medium);
|
|
5214
|
+
}
|
|
5215
|
+
|
|
5216
|
+
.strand-swatch__hex {
|
|
5217
|
+
font-family: var(--strand-font-mono);
|
|
5218
|
+
font-size: 11px;
|
|
5219
|
+
opacity: 0.75;
|
|
5220
|
+
margin-top: auto;
|
|
5221
|
+
}
|
|
5222
|
+
|
|
5223
|
+
|
|
4175
5224
|
/* Switch */
|
|
4176
5225
|
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
4177
5226
|
|
|
@@ -4836,6 +5885,67 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
4836
5885
|
}
|
|
4837
5886
|
|
|
4838
5887
|
|
|
5888
|
+
/* TokenSpecimen */
|
|
5889
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
5890
|
+
|
|
5891
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
5892
|
+
|
|
5893
|
+
/* ══════════════════════════════════════════════════
|
|
5894
|
+
TOKEN SPECIMEN (spacing / radius / shadow tiles)
|
|
5895
|
+
══════════════════════════════════════════════════
|
|
5896
|
+
Each specimen pairs a visual (spacer bar, radius box, or
|
|
5897
|
+
shadow tile) with a mono label and value. Visuals set their
|
|
5898
|
+
pixel dimensions and shadow/radius inline (per-token variance
|
|
5899
|
+
is the whole point of the spec). */
|
|
5900
|
+
|
|
5901
|
+
.strand-token-specimen-grid {
|
|
5902
|
+
display: grid;
|
|
5903
|
+
grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
|
|
5904
|
+
gap: var(--strand-space-5);
|
|
5905
|
+
}
|
|
5906
|
+
|
|
5907
|
+
.strand-token-specimen {
|
|
5908
|
+
display: flex;
|
|
5909
|
+
flex-direction: column;
|
|
5910
|
+
gap: 10px;
|
|
5911
|
+
align-items: flex-start;
|
|
5912
|
+
font-family: var(--strand-font-mono);
|
|
5913
|
+
font-size: 10px;
|
|
5914
|
+
letter-spacing: 0.04em;
|
|
5915
|
+
color: var(--strand-gray-500);
|
|
5916
|
+
line-height: 1.5;
|
|
5917
|
+
}
|
|
5918
|
+
|
|
5919
|
+
.strand-token-specimen b {
|
|
5920
|
+
display: block;
|
|
5921
|
+
font-weight: var(--strand-weight-medium);
|
|
5922
|
+
color: var(--strand-blue-midnight);
|
|
5923
|
+
letter-spacing: 0.06em;
|
|
5924
|
+
text-transform: uppercase;
|
|
5925
|
+
font-size: 10px;
|
|
5926
|
+
}
|
|
5927
|
+
|
|
5928
|
+
.strand-token-specimen > span {
|
|
5929
|
+
display: block;
|
|
5930
|
+
line-height: 1.5;
|
|
5931
|
+
}
|
|
5932
|
+
|
|
5933
|
+
.strand-token-specimen__spacer {
|
|
5934
|
+
display: block;
|
|
5935
|
+
height: 16px;
|
|
5936
|
+
background: var(--strand-blue-primary);
|
|
5937
|
+
border-radius: var(--strand-radius-sm);
|
|
5938
|
+
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15);
|
|
5939
|
+
}
|
|
5940
|
+
|
|
5941
|
+
.strand-token-specimen__box {
|
|
5942
|
+
width: 64px;
|
|
5943
|
+
height: 64px;
|
|
5944
|
+
background: var(--strand-surface-elevated);
|
|
5945
|
+
border: 1px solid var(--strand-gray-200);
|
|
5946
|
+
}
|
|
5947
|
+
|
|
5948
|
+
|
|
4839
5949
|
/* Tooltip */
|
|
4840
5950
|
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
4841
5951
|
|
|
@@ -4914,6 +6024,46 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
4914
6024
|
}
|
|
4915
6025
|
|
|
4916
6026
|
|
|
6027
|
+
/* TypeSpecimen */
|
|
6028
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
6029
|
+
|
|
6030
|
+
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
6031
|
+
|
|
6032
|
+
/* ══════════════════════════════════════════════════
|
|
6033
|
+
TYPE SPECIMEN (docs-site typography tile)
|
|
6034
|
+
══════════════════════════════════════════════════
|
|
6035
|
+
A stacked specimen: large display text on top, mono meta
|
|
6036
|
+
line below. Use inside a section body on a typography
|
|
6037
|
+
documentation page. Dashed divider between siblings. */
|
|
6038
|
+
|
|
6039
|
+
.strand-type-specimen {
|
|
6040
|
+
display: grid;
|
|
6041
|
+
grid-template-columns: 1fr;
|
|
6042
|
+
gap: var(--strand-space-3);
|
|
6043
|
+
padding: var(--strand-space-5) 0;
|
|
6044
|
+
border-top: 1px dashed var(--strand-gray-200);
|
|
6045
|
+
}
|
|
6046
|
+
|
|
6047
|
+
.strand-type-specimen:first-child {
|
|
6048
|
+
border-top: 0;
|
|
6049
|
+
padding-top: 0;
|
|
6050
|
+
}
|
|
6051
|
+
|
|
6052
|
+
.strand-type-specimen__meta {
|
|
6053
|
+
display: block;
|
|
6054
|
+
font-family: var(--strand-font-mono);
|
|
6055
|
+
font-size: 10px;
|
|
6056
|
+
letter-spacing: 0.06em;
|
|
6057
|
+
color: var(--strand-gray-500);
|
|
6058
|
+
line-height: 1.5;
|
|
6059
|
+
}
|
|
6060
|
+
|
|
6061
|
+
.strand-type-specimen__meta b {
|
|
6062
|
+
color: var(--strand-blue-primary);
|
|
6063
|
+
font-weight: var(--strand-weight-medium);
|
|
6064
|
+
}
|
|
6065
|
+
|
|
6066
|
+
|
|
4917
6067
|
/* Static & Utilities */
|
|
4918
6068
|
/*! Strand UI | MIT License | dillingerstaffing.com */
|
|
4919
6069
|
|
|
@@ -5222,6 +6372,37 @@ body.strand-banner-active .strand-instrument-viewport--full-bleed {
|
|
|
5222
6372
|
color: var(--strand-teal-vital);
|
|
5223
6373
|
}
|
|
5224
6374
|
|
|
6375
|
+
/* ── Key-Value Row: editorial modifier ──
|
|
6376
|
+
Additive modifier on .strand-kv for card-metadata contexts
|
|
6377
|
+
(composed cards, editorial specimens) where values should
|
|
6378
|
+
read as soft sans-serif Blue-midnight rather than the default
|
|
6379
|
+
mono-gray instrument readout. Dashed divider between rows.
|
|
6380
|
+
Use inside .strand-card__section content blocks. The base
|
|
6381
|
+
.strand-kv default stays mono-tabular for instrument surfaces. */
|
|
6382
|
+
.strand-kv--editorial {
|
|
6383
|
+
padding: 6px 0;
|
|
6384
|
+
font-size: var(--strand-text-sm);
|
|
6385
|
+
line-height: 1.4;
|
|
6386
|
+
}
|
|
6387
|
+
|
|
6388
|
+
.strand-kv--editorial + .strand-kv--editorial {
|
|
6389
|
+
border-top: 1px dashed var(--strand-gray-200);
|
|
6390
|
+
}
|
|
6391
|
+
|
|
6392
|
+
.strand-kv--editorial .strand-kv__label {
|
|
6393
|
+
letter-spacing: var(--strand-tracking-ultra);
|
|
6394
|
+
flex: none;
|
|
6395
|
+
white-space: nowrap;
|
|
6396
|
+
}
|
|
6397
|
+
|
|
6398
|
+
.strand-kv--editorial .strand-kv__value {
|
|
6399
|
+
font-family: var(--strand-font-sans);
|
|
6400
|
+
font-size: var(--strand-text-sm);
|
|
6401
|
+
color: var(--strand-blue-midnight);
|
|
6402
|
+
font-weight: var(--strand-weight-medium);
|
|
6403
|
+
font-variant-numeric: normal;
|
|
6404
|
+
}
|
|
6405
|
+
|
|
5225
6406
|
/* ── Diagnostic Log Entry ──
|
|
5226
6407
|
Derivation: inline-sequence + ranked-sequence (DL 11.10).
|
|
5227
6408
|
time(OVERLINE) + status(OVERLINE+COLOR_SEMANTIC) + text(SECONDARY) + RANK_BORDER */
|