@deriv-com/dds-marketing 1.0.1 → 1.1.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/.llm/components/awards.md +209 -0
- package/.llm/components/background.md +420 -0
- package/.llm/components/bottomsheet.md +5 -0
- package/.llm/components/comparisoncards.md +257 -0
- package/.llm/components/comparisontable.md +231 -0
- package/.llm/components/ctabanner.md +22 -0
- package/.llm/components/ctabannerslider.md +36 -2
- package/.llm/components/datatable.md +273 -0
- package/.llm/components/downloadbanner.md +283 -0
- package/.llm/components/featurecards.md +41 -3
- package/.llm/components/featurecardscarousel.md +311 -0
- package/.llm/components/featuresplit.md +5 -0
- package/.llm/components/featurestack.md +227 -0
- package/.llm/components/illustrationcard.md +236 -0
- package/.llm/components/illustrationscene.md +229 -0
- package/.llm/components/imagebanner.md +278 -0
- package/.llm/components/landinghero.md +24 -0
- package/.llm/components/navbar.md +1 -1
- package/.llm/components/navbaritem.md +4 -0
- package/.llm/components/pageheader.md +22 -0
- package/.llm/components/paginationdots.md +6 -1
- package/.llm/components/producthero.md +35 -11
- package/.llm/components/resourcebanner.md +247 -0
- package/.llm/components/scenescroll.md +222 -0
- package/.llm/components/select.md +17 -0
- package/.llm/components/stats.md +219 -0
- package/.llm/components/steps.md +286 -0
- package/.llm/components/stickycards.md +251 -0
- package/.llm/components/tableheadercell.md +19 -0
- package/.llm/components/teamgrid.md +243 -0
- package/.llm/components/testimonialrow.md +5 -0
- package/.llm/components/testimonialslider.md +14 -1
- package/.llm/components/textarea.md +13 -0
- package/.llm/components/textinput.md +13 -0
- package/.llm/components/textscroll.md +187 -0
- package/.llm/components/tiers.md +227 -0
- package/.llm/digest/awards.md +45 -0
- package/.llm/digest/background.md +53 -0
- package/.llm/digest/bottomsheet.md +2 -0
- package/.llm/digest/comparisoncards.md +51 -0
- package/.llm/digest/comparisontable.md +53 -0
- package/.llm/digest/ctabanner.md +4 -0
- package/.llm/digest/ctabannerslider.md +7 -0
- package/.llm/digest/datatable.md +65 -0
- package/.llm/digest/downloadbanner.md +65 -0
- package/.llm/digest/featurecards.md +1 -1
- package/.llm/digest/featurecardscarousel.md +54 -0
- package/.llm/digest/featuresplit.md +1 -0
- package/.llm/digest/featurestack.md +48 -0
- package/.llm/digest/illustrationcard.md +46 -0
- package/.llm/digest/illustrationscene.md +50 -0
- package/.llm/digest/imagebanner.md +64 -0
- package/.llm/digest/landinghero.md +7 -0
- package/.llm/digest/navbaritem.md +1 -0
- package/.llm/digest/pageheader.md +4 -0
- package/.llm/digest/paginationdots.md +3 -1
- package/.llm/digest/producthero.md +4 -2
- package/.llm/digest/resourcebanner.md +53 -0
- package/.llm/digest/scenescroll.md +49 -0
- package/.llm/digest/select.md +5 -0
- package/.llm/digest/stats.md +46 -0
- package/.llm/digest/steps.md +55 -0
- package/.llm/digest/stickycards.md +52 -0
- package/.llm/digest/tableheadercell.md +4 -0
- package/.llm/digest/teamgrid.md +53 -0
- package/.llm/digest/testimonialrow.md +2 -0
- package/.llm/digest/testimonialslider.md +4 -0
- package/.llm/digest/textarea.md +4 -0
- package/.llm/digest/textinput.md +4 -0
- package/.llm/digest/textscroll.md +43 -0
- package/.llm/digest/tiers.md +50 -0
- package/.llm/index.md +25 -2
- package/.llm/tokens.md +37 -1
- package/AGENTS.md +20 -1
- package/dist/components/awards-data.d.ts +24 -0
- package/dist/components/awards-data.js +11 -0
- package/dist/components/block-image-data.d.ts +24 -0
- package/dist/components/block-image-data.js +9 -0
- package/dist/components/blocks/awards/Awards.css +134 -0
- package/dist/components/blocks/awards/Awards.d.ts +24 -0
- package/dist/components/blocks/awards/Awards.js +114 -0
- package/dist/components/blocks/awards/Awards.types.d.ts +31 -0
- package/dist/components/blocks/awards/Awards.types.js +16 -0
- package/dist/components/blocks/awards/awards-impl.css +222 -0
- package/dist/components/blocks/cards-of.d.ts +16 -0
- package/dist/components/blocks/cards-of.js +23 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.css +195 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.d.ts +24 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.js +75 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.types.d.ts +49 -0
- package/dist/components/blocks/comparison-cards/ComparisonCards.types.js +26 -0
- package/dist/components/blocks/comparison-cards/comparison-cards-impl.css +262 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.css +111 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.d.ts +25 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.js +100 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.types.d.ts +36 -0
- package/dist/components/blocks/comparison-table/ComparisonTable.types.js +15 -0
- package/dist/components/blocks/comparison-table/comparison-table-impl.css +143 -0
- package/dist/components/blocks/cta-banner/CtaBanner.css +1 -0
- package/dist/components/blocks/cta-banner/CtaBanner.d.ts +1 -1
- package/dist/components/blocks/cta-banner/CtaBanner.js +3 -2
- package/dist/components/blocks/cta-banner/CtaBanner.types.d.ts +6 -0
- package/dist/components/blocks/cta-banner/CtaBanner.types.js +1 -1
- package/dist/components/blocks/cta-banner/cta-banner-impl.css +8 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.css +1 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.d.ts +1 -1
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.js +10 -5
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.d.ts +12 -0
- package/dist/components/blocks/cta-banner-slider/CtaBannerSlider.types.js +1 -1
- package/dist/components/blocks/cta-banner-slider/cta-banner-slider-impl.css +8 -0
- package/dist/components/blocks/data-table/DataTable.css +170 -0
- package/dist/components/blocks/data-table/DataTable.d.ts +29 -0
- package/dist/components/blocks/data-table/DataTable.js +84 -0
- package/dist/components/blocks/data-table/DataTable.types.d.ts +69 -0
- package/dist/components/blocks/data-table/DataTable.types.js +19 -0
- package/dist/components/blocks/data-table/data-table-impl.css +155 -0
- package/dist/components/blocks/download-banner/DownloadBanner.css +228 -0
- package/dist/components/blocks/download-banner/DownloadBanner.d.ts +28 -0
- package/dist/components/blocks/download-banner/DownloadBanner.js +75 -0
- package/dist/components/blocks/download-banner/DownloadBanner.types.d.ts +56 -0
- package/dist/components/blocks/download-banner/DownloadBanner.types.js +23 -0
- package/dist/components/blocks/download-banner/download-banner-impl.css +216 -0
- package/dist/components/blocks/faq-accordion/FaqAccordion.css +1 -0
- package/dist/components/blocks/faq-accordion/faq-accordion-impl.css +3 -7
- package/dist/components/blocks/feature-bullets/FeatureBullets.css +1 -0
- package/dist/components/blocks/feature-bullets/feature-bullets-impl.css +14 -1
- package/dist/components/blocks/feature-cards/FeatureCards.css +1 -0
- package/dist/components/blocks/feature-cards/FeatureCards.d.ts +2 -1
- package/dist/components/blocks/feature-cards/FeatureCards.js +4 -21
- package/dist/components/blocks/feature-cards/feature-cards-impl.css +10 -9
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.css +115 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.d.ts +30 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.js +160 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.d.ts +52 -0
- package/dist/components/blocks/feature-cards-carousel/FeatureCardsCarousel.types.js +17 -0
- package/dist/components/blocks/feature-cards-carousel/feature-cards-carousel-impl.css +207 -0
- package/dist/components/blocks/feature-scroll/FeatureScroll.css +1 -0
- package/dist/components/blocks/feature-split/FeatureSplit.css +1 -0
- package/dist/components/blocks/feature-split/feature-split-impl.css +14 -1
- package/dist/components/blocks/feature-stack/FeatureStack.css +86 -0
- package/dist/components/blocks/feature-stack/FeatureStack.d.ts +19 -0
- package/dist/components/blocks/feature-stack/FeatureStack.js +27 -0
- package/dist/components/blocks/feature-stack/FeatureStack.types.d.ts +34 -0
- package/dist/components/blocks/feature-stack/FeatureStack.types.js +14 -0
- package/dist/components/blocks/feature-stack/feature-stack-impl.css +87 -0
- package/dist/components/blocks/image-banner/ImageBanner.css +133 -0
- package/dist/components/blocks/image-banner/ImageBanner.d.ts +32 -0
- package/dist/components/blocks/image-banner/ImageBanner.js +41 -0
- package/dist/components/blocks/image-banner/ImageBanner.types.d.ts +54 -0
- package/dist/components/blocks/image-banner/ImageBanner.types.js +14 -0
- package/dist/components/blocks/image-banner/image-banner-impl.css +281 -0
- package/dist/components/blocks/landing-hero/LandingHero.css +1 -0
- package/dist/components/blocks/landing-hero/LandingHero.d.ts +1 -1
- package/dist/components/blocks/landing-hero/LandingHero.js +4 -3
- package/dist/components/blocks/landing-hero/LandingHero.types.d.ts +7 -3
- package/dist/components/blocks/logo-columns/LogoColumns.css +1 -0
- package/dist/components/blocks/logo-rows/LogoRows.css +1 -0
- package/dist/components/blocks/page-header/PageHeader.css +1 -0
- package/dist/components/blocks/page-header/PageHeader.d.ts +1 -1
- package/dist/components/blocks/page-header/PageHeader.js +3 -2
- package/dist/components/blocks/page-header/PageHeader.types.d.ts +6 -0
- package/dist/components/blocks/page-header/PageHeader.types.js +1 -1
- package/dist/components/blocks/page-header/page-header-impl.css +10 -0
- package/dist/components/blocks/product-hero/ProductHero.css +8 -3
- package/dist/components/blocks/product-hero/ProductHero.d.ts +1 -1
- package/dist/components/blocks/product-hero/ProductHero.js +5 -2
- package/dist/components/blocks/product-hero/ProductHero.types.d.ts +5 -1
- package/dist/components/blocks/product-hero/ProductHero.types.js +1 -0
- package/dist/components/blocks/product-hero/product-hero-impl.css +43 -12
- package/dist/components/blocks/resource-banner/ResourceBanner.css +106 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.d.ts +32 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.js +51 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.types.d.ts +44 -0
- package/dist/components/blocks/resource-banner/ResourceBanner.types.js +14 -0
- package/dist/components/blocks/resource-banner/resource-banner-impl.css +69 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.css +93 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.d.ts +36 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.js +54 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.types.d.ts +32 -0
- package/dist/components/blocks/scene-scroll/SceneScroll.types.js +15 -0
- package/dist/components/blocks/scene-scroll/scene-scroll-impl.css +275 -0
- package/dist/components/blocks/stats/Stats.css +139 -0
- package/dist/components/blocks/stats/Stats.d.ts +24 -0
- package/dist/components/blocks/stats/Stats.js +120 -0
- package/dist/components/blocks/stats/Stats.types.d.ts +36 -0
- package/dist/components/blocks/stats/Stats.types.js +19 -0
- package/dist/components/blocks/stats/stats-count.d.ts +34 -0
- package/dist/components/blocks/stats/stats-count.js +61 -0
- package/dist/components/blocks/stats/stats-impl.css +284 -0
- package/dist/components/blocks/stats/use-wheel.d.ts +37 -0
- package/dist/components/blocks/stats/use-wheel.js +126 -0
- package/dist/components/blocks/steps/Steps.css +202 -0
- package/dist/components/blocks/steps/Steps.d.ts +32 -0
- package/dist/components/blocks/steps/Steps.js +65 -0
- package/dist/components/blocks/steps/Steps.types.d.ts +48 -0
- package/dist/components/blocks/steps/Steps.types.js +21 -0
- package/dist/components/blocks/steps/steps-impl.css +216 -0
- package/dist/components/blocks/steps/use-turn.d.ts +33 -0
- package/dist/components/blocks/steps/use-turn.js +75 -0
- package/dist/components/blocks/sticky-cards/StickyCards.css +154 -0
- package/dist/components/blocks/sticky-cards/StickyCards.d.ts +35 -0
- package/dist/components/blocks/sticky-cards/StickyCards.js +153 -0
- package/dist/components/blocks/sticky-cards/StickyCards.types.d.ts +43 -0
- package/dist/components/blocks/sticky-cards/StickyCards.types.js +18 -0
- package/dist/components/blocks/sticky-cards/sticky-cards-impl.css +393 -0
- package/dist/components/blocks/team-grid/TeamGrid.css +159 -0
- package/dist/components/blocks/team-grid/TeamGrid.d.ts +28 -0
- package/dist/components/blocks/team-grid/TeamGrid.js +74 -0
- package/dist/components/blocks/team-grid/TeamGrid.types.d.ts +51 -0
- package/dist/components/blocks/team-grid/TeamGrid.types.js +20 -0
- package/dist/components/blocks/team-grid/team-grid-impl.css +129 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.css +1 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.d.ts +1 -1
- package/dist/components/blocks/testimonial-row/TestimonialRow.js +4 -3
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.d.ts +3 -0
- package/dist/components/blocks/testimonial-row/TestimonialRow.types.js +1 -1
- package/dist/components/blocks/testimonial-row/testimonial-row-impl.css +8 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.css +1 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.d.ts +1 -1
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.js +2 -2
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.d.ts +8 -0
- package/dist/components/blocks/testimonial-slider/TestimonialSlider.types.js +1 -1
- package/dist/components/blocks/text-scroll/TextScroll.css +53 -0
- package/dist/components/blocks/text-scroll/TextScroll.d.ts +5 -0
- package/dist/components/blocks/text-scroll/TextScroll.js +71 -0
- package/dist/components/blocks/text-scroll/TextScroll.types.d.ts +22 -0
- package/dist/components/blocks/text-scroll/TextScroll.types.js +10 -0
- package/dist/components/blocks/text-scroll/text-scroll-impl.css +115 -0
- package/dist/components/blocks/tiers/Tiers.css +233 -0
- package/dist/components/blocks/tiers/Tiers.d.ts +32 -0
- package/dist/components/blocks/tiers/Tiers.js +68 -0
- package/dist/components/blocks/tiers/Tiers.types.d.ts +45 -0
- package/dist/components/blocks/tiers/Tiers.types.js +25 -0
- package/dist/components/blocks/tiers/tiers-impl.css +185 -0
- package/dist/components/blocks/use-rotation.d.ts +12 -2
- package/dist/components/blocks/use-rotation.js +6 -28
- package/dist/components/comparison-cards-data.d.ts +59 -0
- package/dist/components/comparison-cards-data.js +12 -0
- package/dist/components/comparison-table-data.d.ts +39 -0
- package/dist/components/comparison-table-data.js +11 -0
- package/dist/components/core/accordion-item/AccordionItem.css +1 -5
- package/dist/components/core/background/Background.css +92 -0
- package/dist/components/core/background/Background.d.ts +27 -0
- package/dist/components/core/background/Background.js +45 -0
- package/dist/components/core/background/Background.types.d.ts +39 -0
- package/dist/components/core/background/Background.types.js +11 -0
- package/dist/components/core/background/background-impl.css +760 -0
- package/dist/components/core/background/halftone.d.ts +134 -0
- package/dist/components/core/background/halftone.js +722 -0
- package/dist/components/core/background/patterns.d.ts +66 -0
- package/dist/components/core/background/patterns.js +244 -0
- package/dist/components/core/background/shader.d.ts +44 -0
- package/dist/components/core/background/shader.js +307 -0
- package/dist/components/core/background/use-halftone.d.ts +15 -0
- package/dist/components/core/background/use-halftone.js +27 -0
- package/dist/components/core/background/use-offscreen.d.ts +10 -0
- package/dist/components/core/background/use-offscreen.js +30 -0
- package/dist/components/core/background/use-shader.d.ts +11 -0
- package/dist/components/core/background/use-shader.js +25 -0
- package/dist/components/core/background/use-spotlight.d.ts +14 -0
- package/dist/components/core/background/use-spotlight.js +73 -0
- package/dist/components/core/bottom-sheet/BottomSheet.js +2 -2
- package/dist/components/core/bottom-sheet/BottomSheet.types.d.ts +3 -1
- package/dist/components/core/breadcrumb/Breadcrumb.d.ts +1 -0
- package/dist/components/core/breadcrumb/Breadcrumb.js +1 -0
- package/dist/components/core/breadcrumb/breadcrumb-impl.css +11 -0
- package/dist/components/core/button/button-impl.css +14 -1
- package/dist/components/core/illustration-card/IllustrationCard.css +40 -0
- package/dist/components/core/illustration-card/IllustrationCard.d.ts +22 -0
- package/dist/components/core/illustration-card/IllustrationCard.js +82 -0
- package/dist/components/core/illustration-card/IllustrationCard.types.d.ts +23 -0
- package/dist/components/core/illustration-card/IllustrationCard.types.js +8 -0
- package/dist/components/core/illustration-card/illustration-card-impl.css +47 -0
- package/dist/components/core/illustration-scene/IllustrationScene.css +41 -0
- package/dist/components/core/illustration-scene/IllustrationScene.d.ts +14 -0
- package/dist/components/core/illustration-scene/IllustrationScene.js +16 -0
- package/dist/components/core/illustration-scene/IllustrationScene.types.d.ts +32 -0
- package/dist/components/core/illustration-scene/IllustrationScene.types.js +8 -0
- package/dist/components/core/illustration-scene/illustration-scene-impl.css +46 -0
- package/dist/components/core/link/Link.js +7 -3
- package/dist/components/core/link/link-impl.css +29 -2
- package/dist/components/core/navbar/Navbar.css +2 -2
- package/dist/components/core/navbar/Navbar.types.d.ts +1 -1
- package/dist/components/core/navbar-item/NavbarItem.d.ts +2 -1
- package/dist/components/core/navbar-item/NavbarItem.js +3 -10
- package/dist/components/core/navbar-item/NavbarItem.types.d.ts +4 -1
- package/dist/components/core/navbar-item/NavbarItem.types.js +1 -1
- package/dist/components/core/navbar-item/navbar-item-impl.css +10 -0
- package/dist/components/core/navbar-menu/navbar-menu-impl.css +9 -0
- package/dist/components/core/navbar-switcher/navbar-switcher-impl.css +19 -0
- package/dist/components/core/pagination/Pagination.js +1 -1
- package/dist/components/core/pagination/pagination-impl.css +9 -0
- package/dist/components/core/pagination-dots/PaginationDots.d.ts +1 -1
- package/dist/components/core/pagination-dots/PaginationDots.js +3 -3
- package/dist/components/core/pagination-dots/PaginationDots.types.d.ts +3 -1
- package/dist/components/core/segmented-control/SegmentedControl.css +4 -3
- package/dist/components/core/segmented-control/SegmentedControl.js +17 -3
- package/dist/components/core/segmented-control-item/SegmentedControlItem.css +2 -1
- package/dist/components/core/select/Select.js +3 -3
- package/dist/components/core/select/Select.types.d.ts +11 -1
- package/dist/components/core/select/Select.types.js +1 -1
- package/dist/components/core/tab-list/TabList.js +9 -1
- package/dist/components/core/table-header-cell/TableHeaderCell.d.ts +1 -1
- package/dist/components/core/table-header-cell/TableHeaderCell.js +5 -2
- package/dist/components/core/table-header-cell/TableHeaderCell.types.d.ts +7 -1
- package/dist/components/core/table-header-cell/TableHeaderCell.types.js +1 -1
- package/dist/components/core/text-area/TextArea.d.ts +1 -1
- package/dist/components/core/text-area/TextArea.js +2 -2
- package/dist/components/core/text-area/TextArea.types.d.ts +9 -1
- package/dist/components/core/text-area/TextArea.types.js +1 -1
- package/dist/components/core/text-input/TextInput.d.ts +1 -1
- package/dist/components/core/text-input/TextInput.js +2 -2
- package/dist/components/core/text-input/TextInput.types.d.ts +9 -1
- package/dist/components/core/text-input/TextInput.types.js +1 -1
- package/dist/components/data-table-data.d.ts +33 -0
- package/dist/components/data-table-data.js +12 -0
- package/dist/components/download-banner-data.d.ts +52 -0
- package/dist/components/download-banner-data.js +11 -0
- package/dist/components/index.d.ts +51 -0
- package/dist/components/index.js +38 -0
- package/dist/components/resource-banner-data.d.ts +34 -0
- package/dist/components/resource-banner-data.js +13 -0
- package/dist/components/scene-scroll-data.d.ts +24 -0
- package/dist/components/scene-scroll-data.js +9 -0
- package/dist/components/stats-data.d.ts +28 -0
- package/dist/components/stats-data.js +11 -0
- package/dist/components/steps-data.d.ts +38 -0
- package/dist/components/steps-data.js +13 -0
- package/dist/components/sticky-cards-data.d.ts +43 -0
- package/dist/components/sticky-cards-data.js +12 -0
- package/dist/components/team-grid-data.d.ts +38 -0
- package/dist/components/team-grid-data.js +11 -0
- package/dist/components/tiers-data.d.ts +47 -0
- package/dist/components/tiers-data.js +13 -0
- package/dist/marketing.css +101 -28
- package/package.json +1 -1
|
@@ -0,0 +1,760 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Scoped to this package, like the generated sheet beside it.
|
|
3
|
+
*
|
|
4
|
+
* `:where([data-dds-context="marketing"])` confines these rules without contributing
|
|
5
|
+
* specificity, so every override below still ties or beats exactly what it did before.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* The canvas fills the band and sits under what the band holds.
|
|
10
|
+
*
|
|
11
|
+
* Absolutely placed at all four edges rather than sized by width and height, so it follows the
|
|
12
|
+
* band through every resize without the script having to set its CSS size — the script sets only
|
|
13
|
+
* the bitmap, from the box this gives it. No pointer events: the pattern is paint, and every press
|
|
14
|
+
* on the band belongs to the content.
|
|
15
|
+
*
|
|
16
|
+
* These are positions and a pointer rule, not design decisions, and a contract has no way to state
|
|
17
|
+
* an inset of zero on a part — which is why they are here rather than bound.
|
|
18
|
+
*/
|
|
19
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__canvas {
|
|
20
|
+
position: absolute;
|
|
21
|
+
inset: 0;
|
|
22
|
+
display: block;
|
|
23
|
+
inline-size: 100%;
|
|
24
|
+
block-size: 100%;
|
|
25
|
+
pointer-events: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* The content stacks above the canvas by being positioned after it. The root isolates, so this
|
|
30
|
+
* order is settled inside the band and nothing outside it has to know a canvas is there.
|
|
31
|
+
*/
|
|
32
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__content {
|
|
33
|
+
position: relative;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* A Background with nothing to hold is a layer: it fills the band it is placed in, behind that
|
|
38
|
+
* band's own content, which is how a block draws the pattern under itself without its layout
|
|
39
|
+
* changing. The band has to be positioned, and every block that offers the pattern is. It takes no
|
|
40
|
+
* pointer events — the content is on top and gets every press — and the pointer is listened for on
|
|
41
|
+
* the band instead, in `useHalftone`.
|
|
42
|
+
*/
|
|
43
|
+
:where([data-dds-context="marketing"]) .dds-background[data-layer='true'] {
|
|
44
|
+
position: absolute;
|
|
45
|
+
inset: 0;
|
|
46
|
+
pointer-events: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* The two hairline patterns: the rule grid, for `pattern="grid"` — the grid PageHeader paints, for
|
|
51
|
+
* any band — and the rings, for `pattern="rings"`.
|
|
52
|
+
*
|
|
53
|
+
* Both are repeating gradients of hairlines painted onto the root under everything it holds, with
|
|
54
|
+
* the band's own ground laid over them as a fade: opaque at the top, clear at the foot, so the
|
|
55
|
+
* lines rise from the bottom of the band the way the halftone does. A background-image rather than
|
|
56
|
+
* an element, because it is a texture on the ground and not content, and rather than a canvas
|
|
57
|
+
* because the only thing about it that moves is where the lines start — see *The idle motion*.
|
|
58
|
+
*
|
|
59
|
+
* The line takes the pattern role for the ground it is on: the inverse on the dark ground, a
|
|
60
|
+
* brighter white on the coral, and the brand's coral on the light — each a step above the subtle
|
|
61
|
+
* border, which a hairline drawn across a whole band thinned out to almost nothing. The fade is each tone's own ground, so
|
|
62
|
+
* the lines disappear into the band rather than into a colour the band is not.
|
|
63
|
+
*/
|
|
64
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings']) {
|
|
65
|
+
--dds-background-rule: var(--color-border-pattern-inverse);
|
|
66
|
+
--dds-background-fade: var(--color-bg-brand-strong);
|
|
67
|
+
/*
|
|
68
|
+
* How thick a rule is: border.width.hairline, which is half a CSS pixel — one device pixel on a
|
|
69
|
+
* screen of twice the density, and the line this grid was drawn with. A standard-density screen
|
|
70
|
+
* has no half pixel to draw it on, and there the rules came out faint or not at all depending on
|
|
71
|
+
* where each one fell: on a tall band every horizontal rule vanished. So below twice the density
|
|
72
|
+
* the rule is border.width.default, one pixel — the thinnest line that screen can draw.
|
|
73
|
+
*/
|
|
74
|
+
--dds-background-hairline: var(--border-width-hairline);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@media (max-resolution: 1.99dppx) {
|
|
78
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings']) {
|
|
79
|
+
--dds-background-hairline: var(--border-width-default);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* On the light ground the lines are the brand's coral rather than a grey, as the halftone's dots
|
|
85
|
+
* and the aurora's pools are there: a third of color.bg.brand, about as strong as the grey it
|
|
86
|
+
* replaces, so the grid stays quiet but reads as the brand's. It lights up to the full coral.
|
|
87
|
+
*/
|
|
88
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-tone='light'] {
|
|
89
|
+
--dds-background-rule: color-mix(in srgb, var(--color-bg-brand) 35%, transparent);
|
|
90
|
+
--dds-background-fade: var(--color-bg-page);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/*
|
|
94
|
+
* On the coral ground the inverse pattern line, white at a quarter, all but vanished into the
|
|
95
|
+
* coral, so the lines rest at the muted inverse there and light up to full white.
|
|
96
|
+
*/
|
|
97
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-tone='brand'] {
|
|
98
|
+
--dds-background-rule: var(--color-fg-muted-inverse);
|
|
99
|
+
--dds-background-fade: var(--color-bg-brand);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/*
|
|
103
|
+
* The grid: two sets of rules at size.rule-grid.pitch, one across and one down.
|
|
104
|
+
*
|
|
105
|
+
* `to right` is physical: a CSS gradient has no logical direction. A grid is symmetric, so it reads
|
|
106
|
+
* the same in either direction, and it is centred across the band — see the positions below.
|
|
107
|
+
*/
|
|
108
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='grid'] {
|
|
109
|
+
--dds-background-pitch: var(--size-rule-grid-pitch);
|
|
110
|
+
background-image:
|
|
111
|
+
linear-gradient(to bottom, var(--dds-background-fade), transparent),
|
|
112
|
+
linear-gradient(to right, var(--dds-background-rule) 0 var(--dds-background-hairline), transparent 0),
|
|
113
|
+
linear-gradient(to bottom, var(--dds-background-rule) 0 var(--dds-background-hairline), transparent 0);
|
|
114
|
+
/*
|
|
115
|
+
* Each set of rules is one rule on a tile one pitch long, repeated: a tile the size of the band
|
|
116
|
+
* left a seam wherever the band was not a whole number of pitches, and a rising grid carried
|
|
117
|
+
* that seam up through it. Across, a rule falls on the band's middle — the tile is placed half a
|
|
118
|
+
* pitch right of centre, and its rule is its left edge — so the grid is symmetric about the
|
|
119
|
+
* middle, where the rings are centred and the words sit, and never ends on a sliver at one side
|
|
120
|
+
* only. Down, it counts from the top less the idle shift, so the rules rise a pitch a cycle.
|
|
121
|
+
*/
|
|
122
|
+
background-size:
|
|
123
|
+
100% 100%,
|
|
124
|
+
var(--dds-background-pitch) 100%,
|
|
125
|
+
100% var(--dds-background-pitch);
|
|
126
|
+
background-repeat: no-repeat, repeat-x, repeat-y;
|
|
127
|
+
background-position:
|
|
128
|
+
left top,
|
|
129
|
+
calc(50% + var(--dds-background-pitch) / 2) top,
|
|
130
|
+
left calc(var(--dds-background-shift, 0%) * -1);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/*
|
|
134
|
+
* The rings: circles at size.rings.pitch, centred on the middle of the band's foot, so they spread
|
|
135
|
+
* up and out from where the halftone's glow would rest.
|
|
136
|
+
*
|
|
137
|
+
* Each ring is a hairline at full ink — as much line as a grid rule, so the two read at the same
|
|
138
|
+
* strength — with half a hairline of fade either side. A curve drawn with hard stops steps along
|
|
139
|
+
* every pixel it crosses; the fade anti-aliases it. A ridge that only touched the ink at its peak
|
|
140
|
+
* came out a good deal fainter than the grid in the same colour.
|
|
141
|
+
*/
|
|
142
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='rings'] {
|
|
143
|
+
--dds-background-pitch: var(--size-rings-pitch);
|
|
144
|
+
background-image:
|
|
145
|
+
linear-gradient(to bottom, var(--dds-background-fade), transparent),
|
|
146
|
+
var(--dds-background-rings);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/*
|
|
150
|
+
* The rings themselves, declared on the root and on its lit copy alike, so each resolves them in
|
|
151
|
+
* its own ink. They start at the idle shift rather than at the centre, which spreads every ring a
|
|
152
|
+
* pitch outward each cycle: a repeating gradient repeats over its first stop to its last, and both
|
|
153
|
+
* move together, so the spacing never changes.
|
|
154
|
+
*/
|
|
155
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='rings'],
|
|
156
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='rings']::before {
|
|
157
|
+
--dds-background-rings: repeating-radial-gradient(
|
|
158
|
+
circle at 50% 100%,
|
|
159
|
+
transparent var(--dds-background-shift, 0%)
|
|
160
|
+
calc(var(--dds-background-shift, 0%) + var(--dds-background-pitch) - var(--dds-background-hairline) * 2),
|
|
161
|
+
var(--dds-background-rule)
|
|
162
|
+
calc(var(--dds-background-shift, 0%) + var(--dds-background-pitch) - var(--dds-background-hairline) * 1.5)
|
|
163
|
+
calc(var(--dds-background-shift, 0%) + var(--dds-background-pitch) - var(--dds-background-hairline) * 0.5),
|
|
164
|
+
transparent calc(var(--dds-background-shift, 0%) + var(--dds-background-pitch))
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/*
|
|
169
|
+
* The pointer's light on the grid and the rings, on an interactive band.
|
|
170
|
+
*
|
|
171
|
+
* A second, brighter copy of the lines, drawn in a pseudo-element behind the band's content and
|
|
172
|
+
* shown only inside a soft circle around the pointer — size.rule-grid.spotlight on the grid,
|
|
173
|
+
* size.rings.spotlight on the rings — so the lines under the pointer brighten and fade back into
|
|
174
|
+
* the resting ones, and nothing else changes. The pointer's position arrives as two custom
|
|
175
|
+
* properties written once a frame by `useSpotlight`, and `data-spotlit` while it is over the band;
|
|
176
|
+
* the circle fades in and out on the element's opacity, which the compositor runs.
|
|
177
|
+
*
|
|
178
|
+
* `::before`, so it comes before the content in the band's painting order and the content stays on
|
|
179
|
+
* top of it. The lit line is a step up from the resting one on each ground: muted-inverse on the
|
|
180
|
+
* dark ground, full white on the coral, the full brand coral on the light one. Same hairline, same pitch, same
|
|
181
|
+
* position, so a lit line is the resting line brighter rather than a line beside it.
|
|
182
|
+
*/
|
|
183
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])::before {
|
|
184
|
+
--dds-background-lit: var(--color-fg-muted-inverse);
|
|
185
|
+
/* The shift is registered as not inherited — see *The idle motion* — so the lit copy asks for it. */
|
|
186
|
+
--dds-background-shift: inherit;
|
|
187
|
+
content: '';
|
|
188
|
+
position: absolute;
|
|
189
|
+
inset: 0;
|
|
190
|
+
pointer-events: none;
|
|
191
|
+
mask-image: radial-gradient(
|
|
192
|
+
circle var(--dds-background-reach) at var(--dds-background-spot-x, 50%) var(--dds-background-spot-y, 50%),
|
|
193
|
+
#000,
|
|
194
|
+
transparent
|
|
195
|
+
);
|
|
196
|
+
opacity: 0;
|
|
197
|
+
transition-property: opacity;
|
|
198
|
+
transition-duration: var(--motion-duration-normal);
|
|
199
|
+
transition-timing-function: var(--motion-easing-enter);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='grid']::before {
|
|
203
|
+
--dds-background-reach: var(--size-rule-grid-spotlight);
|
|
204
|
+
background-image:
|
|
205
|
+
linear-gradient(to right, var(--dds-background-lit) 0 var(--dds-background-hairline), transparent 0),
|
|
206
|
+
linear-gradient(to bottom, var(--dds-background-lit) 0 var(--dds-background-hairline), transparent 0);
|
|
207
|
+
background-size:
|
|
208
|
+
var(--dds-background-pitch) 100%,
|
|
209
|
+
100% var(--dds-background-pitch);
|
|
210
|
+
background-repeat: repeat-x, repeat-y;
|
|
211
|
+
background-position:
|
|
212
|
+
calc(50% + var(--dds-background-pitch) / 2) top,
|
|
213
|
+
left calc(var(--dds-background-shift, 0%) * -1);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* The rings' lit copy: the same rings, with the rule redeclared as the lit ink. */
|
|
217
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='rings']::before {
|
|
218
|
+
--dds-background-reach: var(--size-rings-spotlight);
|
|
219
|
+
--dds-background-rule: var(--dds-background-lit);
|
|
220
|
+
background-image: var(--dds-background-rings);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-tone='light']::before {
|
|
224
|
+
--dds-background-lit: var(--color-bg-brand);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-tone='brand']::before {
|
|
228
|
+
--dds-background-lit: var(--color-fg-on-brand);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-spotlit='true']::before {
|
|
232
|
+
opacity: 1;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/*
|
|
236
|
+
* The aurora, for `pattern="aurora"`: broad soft pools of the brand's colour rising from the
|
|
237
|
+
* band's foot and drifting into one another — the band lit by colour rather than by points.
|
|
238
|
+
*
|
|
239
|
+
* Three ellipses fading to nothing, in two inks, painted on a pseudo-element behind the content
|
|
240
|
+
* and larger than the band, so it can sway either way without its edge showing. The sway is a
|
|
241
|
+
* transform about the middle of the foot, there and back over motion.duration.drift: a small
|
|
242
|
+
* slide, a small turn and a slight swell, and because the turn lifts one side as it lowers the
|
|
243
|
+
* other, the pools pass across each other rather than moving as one. A transform, so the
|
|
244
|
+
* compositor runs it and the gradients are painted once rather than every frame.
|
|
245
|
+
*
|
|
246
|
+
* The inks are the tone's: coral deepening to the brand's darkest on the dark ground; coral and
|
|
247
|
+
* its hover step, washed thin, on the light ground; and on the coral ground white and the brand's
|
|
248
|
+
* darkest, as the halftone's dots turn white there — darker inks alone were lost on the coral, and
|
|
249
|
+
* near-black came out as a muddy stain rather than light. The white stays at the foot, under the
|
|
250
|
+
* words rather than behind them, and the words are checked against the coral alone. How strongly
|
|
251
|
+
* it is painted is a share of the pool's own opacity, as the halftone's is — under half on the
|
|
252
|
+
* dark ground, where coral at seven tenths burned rather than glowed, and faintest on the light,
|
|
253
|
+
* where coral at strength would be a coral band.
|
|
254
|
+
*
|
|
255
|
+
* The band's top stays plain: the pools fade out under a mask before they reach the upper third.
|
|
256
|
+
*/
|
|
257
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora'] {
|
|
258
|
+
--dds-background-pool: var(--color-bg-brand);
|
|
259
|
+
--dds-background-pool-deep: var(--color-bg-brand-active);
|
|
260
|
+
--dds-background-strength: 0.4;
|
|
261
|
+
/*
|
|
262
|
+
* How strongly the pool under the pointer is painted, per ground. Its own number rather than a
|
|
263
|
+
* share of the pools': half of the light ground's faint wash was invisible, and half of the
|
|
264
|
+
* coral ground's white washed out the white words the pointer was over.
|
|
265
|
+
*/
|
|
266
|
+
--dds-background-hover: 0.25;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora'][data-tone='light'] {
|
|
270
|
+
--dds-background-pool-deep: var(--color-bg-brand-hover);
|
|
271
|
+
--dds-background-strength: 0.22;
|
|
272
|
+
--dds-background-hover: 0.3;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora'][data-tone='brand'] {
|
|
276
|
+
--dds-background-pool: var(--color-fg-on-brand);
|
|
277
|
+
--dds-background-pool-deep: var(--color-bg-brand-active);
|
|
278
|
+
--dds-background-strength: 0.6;
|
|
279
|
+
/*
|
|
280
|
+
* The pointer's pool on the coral is blended in rather than laid over: white at a fifth on top of
|
|
281
|
+
* the coral read as a pale pink patch, a disc of another colour. Overlay lifts the coral under it
|
|
282
|
+
* to a brighter coral instead — light on the band rather than a stain on it — and takes the whole
|
|
283
|
+
* pool without washing out: soft light at full strength was barely there.
|
|
284
|
+
*/
|
|
285
|
+
--dds-background-hover: 1;
|
|
286
|
+
--dds-background-glow-blend: overlay;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/*
|
|
290
|
+
* Behind the content without being before it: the root isolates, so a negative stacking order
|
|
291
|
+
* puts both pseudo-elements over the band's ground and under everything it holds.
|
|
292
|
+
*/
|
|
293
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora']::before,
|
|
294
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora']::after {
|
|
295
|
+
content: '';
|
|
296
|
+
position: absolute;
|
|
297
|
+
z-index: -1;
|
|
298
|
+
pointer-events: none;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora']::before {
|
|
302
|
+
/*
|
|
303
|
+
* Half a band deeper than the band, as well as wider: the turn lowers one end of the layer, and
|
|
304
|
+
* a layer that stopped at the foot showed its own edge there as a hard diagonal. So the foot is
|
|
305
|
+
* two thirds of the way down the layer, and every position and reach below is measured to it.
|
|
306
|
+
*/
|
|
307
|
+
inset-block: 0 -50%;
|
|
308
|
+
inset-inline: -25%;
|
|
309
|
+
background-image:
|
|
310
|
+
radial-gradient(ellipse 30% 53% at 32% calc(100% / 1.5), var(--dds-background-pool), transparent),
|
|
311
|
+
radial-gradient(ellipse 26% 43% at 66% calc(100% / 1.5), var(--dds-background-pool-deep), transparent),
|
|
312
|
+
radial-gradient(ellipse 18% 31% at 50% calc(100% / 1.5), var(--dds-background-pool), transparent);
|
|
313
|
+
mask-image: linear-gradient(to bottom, transparent 20%, #000 calc(100% / 1.5));
|
|
314
|
+
opacity: var(--dds-background-strength);
|
|
315
|
+
transform-origin: 50% calc(100% / 1.5);
|
|
316
|
+
animation: dds-background-aurora var(--motion-duration-drift) var(--motion-easing-shift) infinite alternate;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
@keyframes dds-background-aurora {
|
|
320
|
+
from {
|
|
321
|
+
transform: translateX(-6%) rotate(-3deg);
|
|
322
|
+
}
|
|
323
|
+
to {
|
|
324
|
+
transform: translateX(6%) rotate(3deg) scale(1.08, 1.14);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/*
|
|
329
|
+
* The pool that trails the pointer: a disc of the pool's ink, size.aurora.spotlight in radius,
|
|
330
|
+
* moved under the pointer by a transform that eases after it over motion.duration.trail — the
|
|
331
|
+
* halftone's glow and this one keep the same distance behind the hand. Placed from the band's
|
|
332
|
+
* physical top left because the pointer's position is measured from there. It fades in while the
|
|
333
|
+
* pointer is over the band and out when it leaves, at the ground's own hover strength: at the
|
|
334
|
+
* pools' full strength, and twice the size, it washed over a narrow band and drowned its words.
|
|
335
|
+
*
|
|
336
|
+
* It trails the pointer only while lit. Unlit it moves at once, so the pointer arriving puts the
|
|
337
|
+
* pool where the pointer is before it fades in — `useSpotlight` writes the position first —
|
|
338
|
+
* rather than the pool sliding in from wherever it last was, or from the band's corner.
|
|
339
|
+
*/
|
|
340
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora']::after {
|
|
341
|
+
left: 0;
|
|
342
|
+
top: 0;
|
|
343
|
+
inline-size: calc(var(--size-aurora-spotlight) * 2);
|
|
344
|
+
block-size: calc(var(--size-aurora-spotlight) * 2);
|
|
345
|
+
/*
|
|
346
|
+
* Eased to nothing rather than straight to it: a straight fade stops abruptly at its rim, and the
|
|
347
|
+
* eye read the stop as the edge of a disc. The steps follow a smooth curve down from the centre.
|
|
348
|
+
*/
|
|
349
|
+
background-image: radial-gradient(
|
|
350
|
+
circle closest-side,
|
|
351
|
+
var(--dds-background-pool),
|
|
352
|
+
color-mix(in srgb, var(--dds-background-pool) 62%, transparent) 30%,
|
|
353
|
+
color-mix(in srgb, var(--dds-background-pool) 26%, transparent) 58%,
|
|
354
|
+
color-mix(in srgb, var(--dds-background-pool) 7%, transparent) 82%,
|
|
355
|
+
transparent
|
|
356
|
+
);
|
|
357
|
+
transform: translate(
|
|
358
|
+
calc(var(--dds-background-spot-x, 50%) - var(--size-aurora-spotlight)),
|
|
359
|
+
calc(var(--dds-background-spot-y, 50%) - var(--size-aurora-spotlight))
|
|
360
|
+
);
|
|
361
|
+
/*
|
|
362
|
+
* And blurred by a quarter of its radius, so no step of the fade survives as a ring and the pool
|
|
363
|
+
* has no edge at all — the eased stops alone still left a disc the eye could trace on the coral.
|
|
364
|
+
* Half the radius spread it so thin it all but vanished.
|
|
365
|
+
*/
|
|
366
|
+
filter: blur(calc(var(--size-aurora-spotlight) / 4));
|
|
367
|
+
mix-blend-mode: var(--dds-background-glow-blend, normal);
|
|
368
|
+
opacity: 0;
|
|
369
|
+
transition-property: opacity, transform;
|
|
370
|
+
transition-duration: var(--motion-duration-normal), var(--motion-duration-instant);
|
|
371
|
+
transition-timing-function: var(--motion-easing-enter);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora'][data-spotlit='true']::after {
|
|
375
|
+
opacity: var(--dds-background-hover);
|
|
376
|
+
transition-duration: var(--motion-duration-normal), var(--motion-duration-trail);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/*
|
|
380
|
+
* The idle motion of the grid and the rings: the grid's rules rise a pitch and the rings spread a
|
|
381
|
+
* pitch outward, over motion.duration.drift at an even pace, and again — a pitch on, the pattern
|
|
382
|
+
* is where it began, so the loop has no seam. The halftone's glow and the
|
|
383
|
+
* aurora's pools drift in the same time, so every pattern is moving at a band's pace at rest.
|
|
384
|
+
*
|
|
385
|
+
* The shift is registered so it can be animated: an unregistered custom property only flips from
|
|
386
|
+
* one value to the next. It is not inherited, so the frames reach the root and the lit copy that
|
|
387
|
+
* asks for it, and never restyle the band's content. What moves is a background's start, which
|
|
388
|
+
* repaints the band whenever it changes — so it changes in two hundred even steps a cycle, about
|
|
389
|
+
* twenty a second, rather than at the display's rate: well under a pixel a step at this pace,
|
|
390
|
+
* so it still reads as smooth, and as cheap as the halftone's drift, which draws at thirty. It
|
|
391
|
+
* stops while the band is off screen (`data-offscreen`, written by Background), and when the band
|
|
392
|
+
* is asked to hold still.
|
|
393
|
+
*/
|
|
394
|
+
@property --dds-background-shift {
|
|
395
|
+
syntax: '<length>';
|
|
396
|
+
inherits: false;
|
|
397
|
+
initial-value: 0;
|
|
398
|
+
}
|
|
399
|
+
/*
|
|
400
|
+
* Every use names a fallback of nothing, for an engine without `@property`: there the shift is an
|
|
401
|
+
* unregistered property nobody sets while the band is still, and a bare reference to it would make
|
|
402
|
+
* the whole background invalid — the grid and the rings would vanish exactly when motion is off.
|
|
403
|
+
*/
|
|
404
|
+
|
|
405
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings']) {
|
|
406
|
+
animation: dds-background-shift var(--motion-duration-drift) steps(200) infinite;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
@keyframes dds-background-shift {
|
|
410
|
+
to {
|
|
411
|
+
--dds-background-shift: var(--dds-background-pitch);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/* Off screen, nobody sees it move: every pattern's idle motion waits where it is. */
|
|
416
|
+
:where([data-dds-context="marketing"]) .dds-background[data-offscreen='true'],
|
|
417
|
+
:where([data-dds-context="marketing"]) .dds-background[data-offscreen='true']::before {
|
|
418
|
+
animation-play-state: paused;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/* `animated={false}`: every pattern holds still at rest. What it does under the pointer is `interactive`. */
|
|
422
|
+
:where([data-dds-context="marketing"]) .dds-background[data-animated='false'],
|
|
423
|
+
:where([data-dds-context="marketing"]) .dds-background[data-animated='false'][data-pattern='aurora']::before {
|
|
424
|
+
animation: none;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/*
|
|
428
|
+
* For a reader who asked for less motion, nothing moves at rest, and the pointer's light on every
|
|
429
|
+
* pattern comes and goes at once rather than fading or trailing.
|
|
430
|
+
*/
|
|
431
|
+
@media (prefers-reduced-motion: reduce) {
|
|
432
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings']),
|
|
433
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora']::before {
|
|
434
|
+
animation: none;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'], [data-pattern='aurora'])::before,
|
|
438
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora']::after {
|
|
439
|
+
transition: none;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/*
|
|
444
|
+
* The mesh, for `pattern="mesh"`: the whole band lit by five pools of the brand's reds that run
|
|
445
|
+
* into one another like liquid — the design system's own front page, as a pattern.
|
|
446
|
+
*
|
|
447
|
+
* The layer overhangs the band by a tenth each side and is blurred by size.mesh.blur, so no pool
|
|
448
|
+
* keeps an edge and the layer's own edge falls outside the band. It sits behind the content by a
|
|
449
|
+
* negative stacking order, which the root's isolation keeps inside the band.
|
|
450
|
+
*
|
|
451
|
+
* The inks are the tone's, set here as five custom properties because each pool takes a different
|
|
452
|
+
* one. On the coral ground, the drawing the pattern was made for: the brand's deepest red, its
|
|
453
|
+
* pressed red twice, its hover, and the coral itself — no white, which washed the reds to pink. On
|
|
454
|
+
* the dark ground the same reds glowing on near-black, the deepest swapped for the coral so the
|
|
455
|
+
* glow has somewhere to start. On the light ground a blush: the coral and its pale tint, held back.
|
|
456
|
+
*/
|
|
457
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__mesh {
|
|
458
|
+
--dds-background-mesh-1: var(--color-bg-brand-deep);
|
|
459
|
+
--dds-background-mesh-2: var(--color-bg-brand-active);
|
|
460
|
+
--dds-background-mesh-3: var(--color-bg-brand-hover);
|
|
461
|
+
--dds-background-mesh-4: var(--color-bg-brand-active);
|
|
462
|
+
--dds-background-mesh-5: var(--color-bg-brand);
|
|
463
|
+
/* The deepest pool is a shade under the words, not a ground of its own: at 0.85 it turned half
|
|
464
|
+
the band brown, at 0.35 it left the words on a flat red. */
|
|
465
|
+
--dds-background-mesh-shade: 0.55;
|
|
466
|
+
--dds-background-mesh-strength: 1;
|
|
467
|
+
inset: -10%;
|
|
468
|
+
z-index: -1;
|
|
469
|
+
filter: blur(var(--size-mesh-blur)) saturate(1.15);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
:where([data-dds-context="marketing"]) .dds-background[data-tone='dark'] .dds-background__mesh {
|
|
473
|
+
--dds-background-mesh-1: var(--color-bg-brand);
|
|
474
|
+
--dds-background-mesh-shade: 0.7;
|
|
475
|
+
--dds-background-mesh-strength: 0.6;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
:where([data-dds-context="marketing"]) .dds-background[data-tone='light'] .dds-background__mesh {
|
|
479
|
+
--dds-background-mesh-1: var(--color-bg-brand-subtle);
|
|
480
|
+
--dds-background-mesh-2: var(--color-bg-brand);
|
|
481
|
+
--dds-background-mesh-3: var(--color-bg-brand-subtle);
|
|
482
|
+
--dds-background-mesh-4: var(--color-bg-brand-hover);
|
|
483
|
+
--dds-background-mesh-5: var(--color-bg-brand-subtle);
|
|
484
|
+
--dds-background-mesh-shade: 1;
|
|
485
|
+
--dds-background-mesh-strength: 0.22;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/*
|
|
489
|
+
* A pool: an uneven round shape that drifts and stretches on two loops of its own length, and
|
|
490
|
+
* leans towards the pointer by its own depth — a hundredth of the pool per step — trailing it by
|
|
491
|
+
* its own lag, so the colours slide through one another instead of moving as one.
|
|
492
|
+
*
|
|
493
|
+
* Every length of time is a multiple of a motion token, so the mesh keeps pace with the others:
|
|
494
|
+
* the loops of motion.duration.drift, the lag of motion.duration.trail.
|
|
495
|
+
*
|
|
496
|
+
* The drift is a transform and the stretch a `scale` and `rotate`, all the compositor's to move;
|
|
497
|
+
* a changing `border-radius` repainted the whole blurred layer every frame.
|
|
498
|
+
*/
|
|
499
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__pool {
|
|
500
|
+
--depth: 6;
|
|
501
|
+
--lag: 2.8;
|
|
502
|
+
inline-size: 60%;
|
|
503
|
+
aspect-ratio: 1;
|
|
504
|
+
border-radius: 42% 58% 63% 37% / 41% 44% 56% 59%;
|
|
505
|
+
opacity: var(--dds-background-mesh-strength);
|
|
506
|
+
animation:
|
|
507
|
+
dds-background-mesh-drift calc(var(--motion-duration-drift) * 2.6) ease-in-out infinite alternate,
|
|
508
|
+
dds-background-mesh-morph calc(var(--motion-duration-drift) * 1.1) ease-in-out infinite alternate;
|
|
509
|
+
translate:
|
|
510
|
+
calc(var(--dds-background-lean-x, 0) * var(--depth) * 1%)
|
|
511
|
+
calc(var(--dds-background-lean-y, 0) * var(--depth) * 1%);
|
|
512
|
+
transition-property: translate;
|
|
513
|
+
transition-duration: calc(var(--motion-duration-trail) * var(--lag));
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__pool:nth-child(1) {
|
|
517
|
+
--depth: -8;
|
|
518
|
+
--lag: 4.4;
|
|
519
|
+
inset: 45% auto auto -5%;
|
|
520
|
+
inline-size: 45%;
|
|
521
|
+
background-color: var(--dds-background-mesh-1);
|
|
522
|
+
opacity: calc(var(--dds-background-mesh-strength) * var(--dds-background-mesh-shade));
|
|
523
|
+
animation-duration: calc(var(--motion-duration-drift) * 2.6), calc(var(--motion-duration-drift) * 1.3);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__pool:nth-child(2) {
|
|
527
|
+
--depth: 10;
|
|
528
|
+
--lag: 3.2;
|
|
529
|
+
inset: -20% -15% auto auto;
|
|
530
|
+
background-color: var(--dds-background-mesh-2);
|
|
531
|
+
animation-duration: calc(var(--motion-duration-drift) * 3.1), calc(var(--motion-duration-drift) * 0.9);
|
|
532
|
+
animation-delay: calc(var(--motion-duration-drift) * -0.8), calc(var(--motion-duration-drift) * -0.3);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__pool:nth-child(3) {
|
|
536
|
+
--depth: 16;
|
|
537
|
+
--lag: 2;
|
|
538
|
+
inset: 30% 20% auto auto;
|
|
539
|
+
inline-size: 45%;
|
|
540
|
+
background-color: var(--dds-background-mesh-3);
|
|
541
|
+
animation-duration: calc(var(--motion-duration-drift) * 2.2), calc(var(--motion-duration-drift) * 0.7);
|
|
542
|
+
animation-delay: calc(var(--motion-duration-drift) * -1.4), calc(var(--motion-duration-drift) * -0.5);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__pool:nth-child(4) {
|
|
546
|
+
--depth: -12;
|
|
547
|
+
--lag: 5.2;
|
|
548
|
+
inset: auto auto -30% 25%;
|
|
549
|
+
inline-size: 50%;
|
|
550
|
+
background-color: var(--dds-background-mesh-4);
|
|
551
|
+
animation-duration: calc(var(--motion-duration-drift) * 3.5), calc(var(--motion-duration-drift) * 1.2);
|
|
552
|
+
animation-delay: calc(var(--motion-duration-drift) * -0.4), calc(var(--motion-duration-drift) * -0.9);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/* The coral itself, high in the far corner: the brightest the pools go. */
|
|
556
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__pool:nth-child(5) {
|
|
557
|
+
--depth: 20;
|
|
558
|
+
--lag: 1.6;
|
|
559
|
+
inset: -5% 10% auto auto;
|
|
560
|
+
inline-size: 30%;
|
|
561
|
+
background-color: var(--dds-background-mesh-5);
|
|
562
|
+
animation-duration: calc(var(--motion-duration-drift) * 2.8), calc(var(--motion-duration-drift) * 0.8);
|
|
563
|
+
animation-delay: calc(var(--motion-duration-drift) * -1.8), calc(var(--motion-duration-drift) * -0.2);
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
@keyframes dds-background-mesh-drift {
|
|
567
|
+
0% { transform: translate(0, 0) scale(1); }
|
|
568
|
+
33% { transform: translate(12%, -8%) scale(1.15); }
|
|
569
|
+
66% { transform: translate(-10%, 10%) scale(0.9); }
|
|
570
|
+
100% { transform: translate(8%, 6%) scale(1.08); }
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
@keyframes dds-background-mesh-morph {
|
|
574
|
+
0% { scale: 1 1; rotate: 0deg; }
|
|
575
|
+
33% { scale: 1.25 0.8; rotate: 50deg; }
|
|
576
|
+
66% { scale: 0.85 1.2; rotate: 110deg; }
|
|
577
|
+
100% { scale: 1.15 0.9; rotate: 160deg; }
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/*
|
|
581
|
+
* Off screen the pools wait where they are. With `animated` off they rest, and flow only while the
|
|
582
|
+
* pointer is over the band — the front page's own setting — stopping where they are when it leaves
|
|
583
|
+
* rather than jumping home.
|
|
584
|
+
*/
|
|
585
|
+
:where([data-dds-context="marketing"]) .dds-background[data-offscreen='true'] .dds-background__pool,
|
|
586
|
+
:where([data-dds-context="marketing"]) .dds-background[data-animated='false'] .dds-background__pool {
|
|
587
|
+
animation-play-state: paused;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
:where([data-dds-context="marketing"]) .dds-background[data-animated='false'][data-spotlit='true'] .dds-background__pool {
|
|
591
|
+
animation-play-state: running;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/* For a reader who asked for less motion the pools hold still and do not follow the pointer. */
|
|
595
|
+
@media (prefers-reduced-motion: reduce) {
|
|
596
|
+
:where([data-dds-context="marketing"]) .dds-background .dds-background__pool {
|
|
597
|
+
animation: none;
|
|
598
|
+
translate: none;
|
|
599
|
+
transition: none;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/*
|
|
604
|
+
* The shaded patterns — see `shader.ts` and `patterns.ts`.
|
|
605
|
+
*
|
|
606
|
+
* Each names its inks here, per tone, as six custom properties the shader reads back as the
|
|
607
|
+
* browser resolves them: the ground first, then the pattern's own. They are opaque — a shader
|
|
608
|
+
* cannot see through to the band — so a translucent role is mixed onto its ground here, where the
|
|
609
|
+
* stylesheet can do it, rather than in the shader. The strength is how loudly the pattern is
|
|
610
|
+
* painted on that ground, and the grain how much tooth it is given: least on the light ground,
|
|
611
|
+
* where grain reads as dirt, most on the dark, where it reads as film.
|
|
612
|
+
*/
|
|
613
|
+
:where([data-dds-context="marketing"]) .dds-background {
|
|
614
|
+
--dds-background-gl-strength: 1;
|
|
615
|
+
--dds-background-gl-grain: 0.035;
|
|
616
|
+
--dds-background-gl-hairline: var(--border-width-default);
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
:where([data-dds-context="marketing"]) .dds-background[data-tone='dark'] {
|
|
620
|
+
--dds-background-gl-grain: 0.05;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
:where([data-dds-context="marketing"]) .dds-background[data-tone='light'] {
|
|
624
|
+
--dds-background-gl-grain: 0.025;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/*
|
|
628
|
+
* The aurora and the mesh take none. They are drawn at half the density and scaled up, so the grain
|
|
629
|
+
* was scaled up with them: at the hairline patterns' amount it read as noise laid over the light,
|
|
630
|
+
* and at less it showed the lattice of the pixels it was drawn on. The browser's own smoothing as it
|
|
631
|
+
* scales them up is what keeps their long fades from banding.
|
|
632
|
+
*/
|
|
633
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='aurora'], [data-pattern='mesh']) {
|
|
634
|
+
--dds-background-gl-grain: 0;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
/* The aurora: curtains lighter than the ground they rise from, with a deeper red folded through. */
|
|
638
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora'][data-tone='brand'] {
|
|
639
|
+
/* On the coral the curtains are the brand's own deeper reds — its hover and its pressed red —
|
|
640
|
+
with only a touch of light at their brightest, so the band stays coral. White curtains washed
|
|
641
|
+
the coral to pink. */
|
|
642
|
+
--dds-background-gl-ink0: var(--color-bg-brand);
|
|
643
|
+
--dds-background-gl-ink1: var(--color-bg-brand-active);
|
|
644
|
+
--dds-background-gl-ink2: var(--color-bg-brand-hover);
|
|
645
|
+
--dds-background-gl-ink3: color-mix(in srgb, var(--color-bg-brand) 72%, var(--color-fg-on-brand));
|
|
646
|
+
--dds-background-gl-strength: 1;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora'][data-tone='dark'] {
|
|
650
|
+
--dds-background-gl-ink0: var(--color-bg-brand-strong);
|
|
651
|
+
--dds-background-gl-ink1: var(--color-bg-brand);
|
|
652
|
+
--dds-background-gl-ink2: var(--color-bg-brand-active);
|
|
653
|
+
--dds-background-gl-ink3: color-mix(in srgb, var(--color-bg-brand) 60%, var(--color-fg-on-brand-strong));
|
|
654
|
+
--dds-background-gl-strength: 0.85;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='aurora'][data-tone='light'] {
|
|
658
|
+
--dds-background-gl-ink0: var(--color-bg-page);
|
|
659
|
+
--dds-background-gl-ink1: var(--color-bg-brand);
|
|
660
|
+
--dds-background-gl-ink2: var(--color-bg-brand-hover);
|
|
661
|
+
--dds-background-gl-ink3: color-mix(in srgb, var(--color-bg-brand) 50%, var(--color-bg-page));
|
|
662
|
+
--dds-background-gl-strength: 0.35;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
/*
|
|
666
|
+
* The mesh: the front page's five pools, in the same inks as the stylesheet's version of them —
|
|
667
|
+
* the deepest red, the pressed red, the hover, the pressed red again, and the coral — on each
|
|
668
|
+
* ground. The strength is that version's too: full on the coral, a glow on the dark, a blush on
|
|
669
|
+
* the light. How far the deepest is held back is its `--dds-background-mesh-shade`.
|
|
670
|
+
*/
|
|
671
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='mesh'][data-tone='brand'] {
|
|
672
|
+
--dds-background-gl-ink0: var(--color-bg-brand);
|
|
673
|
+
--dds-background-gl-ink1: var(--color-bg-brand-deep);
|
|
674
|
+
--dds-background-gl-ink2: var(--color-bg-brand-active);
|
|
675
|
+
--dds-background-gl-ink3: var(--color-bg-brand-hover);
|
|
676
|
+
--dds-background-gl-ink4: var(--color-bg-brand-active);
|
|
677
|
+
--dds-background-gl-ink5: var(--color-bg-brand);
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='mesh'][data-tone='dark'] {
|
|
681
|
+
--dds-background-gl-ink0: var(--color-bg-brand-strong);
|
|
682
|
+
--dds-background-gl-ink1: var(--color-bg-brand);
|
|
683
|
+
--dds-background-gl-ink2: var(--color-bg-brand-active);
|
|
684
|
+
--dds-background-gl-ink3: var(--color-bg-brand-hover);
|
|
685
|
+
--dds-background-gl-ink4: var(--color-bg-brand-active);
|
|
686
|
+
--dds-background-gl-ink5: var(--color-bg-brand);
|
|
687
|
+
/* Less than the stylesheet's 0.6: its pools are smaller than the band, and these reach every
|
|
688
|
+
corner of it, so at that strength the near-black ground was gone. */
|
|
689
|
+
--dds-background-gl-strength: 0.35;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='mesh'][data-tone='light'] {
|
|
693
|
+
--dds-background-gl-ink0: var(--color-bg-page);
|
|
694
|
+
--dds-background-gl-ink1: var(--color-bg-brand-subtle);
|
|
695
|
+
--dds-background-gl-ink2: var(--color-bg-brand);
|
|
696
|
+
--dds-background-gl-ink3: var(--color-bg-brand-subtle);
|
|
697
|
+
--dds-background-gl-ink4: var(--color-bg-brand-hover);
|
|
698
|
+
--dds-background-gl-ink5: var(--color-bg-brand-subtle);
|
|
699
|
+
--dds-background-gl-strength: 0.22;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/* The grid and the rings: the ground, the resting rule, the lit rule, and the bloom at the foot. */
|
|
703
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='grid'] {
|
|
704
|
+
--dds-background-gl-pitch: var(--size-rule-grid-pitch);
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
:where([data-dds-context="marketing"]) .dds-background[data-pattern='rings'] {
|
|
708
|
+
--dds-background-gl-pitch: var(--size-rings-pitch);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings']) {
|
|
712
|
+
--dds-background-gl-hairline: var(--dds-background-hairline);
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
/* On the coral, the brand's own reds: the bloom the lines rise out of is its pressed red, a deeper
|
|
716
|
+
coral rather than a whitened one, and the rules a faint lighter coral — white blooms and white
|
|
717
|
+
rules washed the band to pink. The lit lines and the travelling light keep most of the white,
|
|
718
|
+
since they are the one thing on the band meant to catch the eye. */
|
|
719
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-tone='brand'] {
|
|
720
|
+
--dds-background-gl-ink0: var(--color-bg-brand);
|
|
721
|
+
--dds-background-gl-ink1: color-mix(in srgb, var(--color-fg-on-brand) 22%, var(--color-bg-brand));
|
|
722
|
+
--dds-background-gl-ink2: color-mix(in srgb, var(--color-fg-on-brand) 70%, var(--color-bg-brand));
|
|
723
|
+
--dds-background-gl-ink3: var(--color-bg-brand-active);
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-tone='dark'] {
|
|
727
|
+
--dds-background-gl-ink0: var(--color-bg-brand-strong);
|
|
728
|
+
--dds-background-gl-ink1: color-mix(in srgb, var(--color-fg-on-brand-strong) 16%, var(--color-bg-brand-strong));
|
|
729
|
+
--dds-background-gl-ink2: var(--color-bg-brand);
|
|
730
|
+
--dds-background-gl-ink3: var(--color-bg-brand-deep);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
:where([data-dds-context="marketing"]) .dds-background:is([data-pattern='grid'], [data-pattern='rings'])[data-tone='light'] {
|
|
734
|
+
--dds-background-gl-ink0: var(--color-bg-page);
|
|
735
|
+
--dds-background-gl-ink1: color-mix(in srgb, var(--color-bg-brand) 28%, var(--color-bg-page));
|
|
736
|
+
--dds-background-gl-ink2: var(--color-bg-brand);
|
|
737
|
+
--dds-background-gl-ink3: color-mix(in srgb, var(--color-bg-brand) 12%, var(--color-bg-page));
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/*
|
|
741
|
+
* The shader's canvas is opaque, so until it has a frame it stays out of sight and the stylesheet's
|
|
742
|
+
* version shows. Once it has — `data-shaded` — the stylesheet's paint steps aside: the grid's and
|
|
743
|
+
* the rings' background images, every pattern's pseudo-elements, and the mesh's pools.
|
|
744
|
+
*/
|
|
745
|
+
:where([data-dds-context="marketing"]) .dds-background:not([data-pattern='halftone']):not([data-shaded='true']) .dds-background__canvas {
|
|
746
|
+
visibility: hidden;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
:where([data-dds-context="marketing"]) .dds-background[data-shaded='true'] {
|
|
750
|
+
background-image: none;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
:where([data-dds-context="marketing"]) .dds-background[data-shaded='true']::before,
|
|
754
|
+
:where([data-dds-context="marketing"]) .dds-background[data-shaded='true']::after {
|
|
755
|
+
display: none;
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
:where([data-dds-context="marketing"]) .dds-background[data-shaded='true'] .dds-background__mesh {
|
|
759
|
+
display: none;
|
|
760
|
+
}
|