@morphemecms/cms 0.1.0 → 0.2.0-next-20261104150211
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/CHANGELOG.md +12 -0
- package/LICENSE +21 -21
- package/README.md +51 -51
- package/astro.mjs +162 -162
- package/bin/morpheme.mjs +38 -38
- package/client.d.ts +10 -10
- package/defaults/blockTexts.ts +33 -33
- package/defaults/collections.ts +774 -774
- package/defaults/colors.ts +125 -125
- package/defaults/company.ts +20 -20
- package/defaults/editor.ts +178 -178
- package/defaults/internalLinks.ts +30 -30
- package/defaults/opens.ts +18 -18
- package/defaults/popup.tsx +93 -93
- package/defaults/privacy.ts +79 -79
- package/defaults/rules.ts +450 -450
- package/defaults/schema.ts +16 -16
- package/defaults/sitedata.ts +129 -129
- package/defaults/standard.ts +106 -106
- package/defaults/standardPages.ts +87 -87
- package/defaults/texts.ts +481 -481
- package/demo/README.md +26 -26
- package/demo/src/content/blog/build-a-page-from-blocks.md +19 -19
- package/demo/src/content/blog/colors-everyone-can-read.md +19 -19
- package/demo/src/content/blog/edit-your-website-from-your-phone.md +21 -21
- package/demo/src/content/blog/every-save-is-a-version.md +21 -21
- package/demo/src/content/blog/schedule-a-post.md +17 -17
- package/demo/src/content/blog/secure-from-day-one.md +17 -17
- package/demo/src/content/blog/seo-without-the-guesswork.md +23 -23
- package/demo/src/content/blog/switch-themes-without-losing-anything.md +23 -23
- package/demo/src/content/blog/the-app-store.md +21 -21
- package/demo/src/content/pages/about.md +22 -22
- package/demo/src/content/pages/app-store.md +30 -30
- package/demo/src/content/pages/blocks.md +98 -98
- package/demo/src/content/pages/blog-page.md +11 -11
- package/demo/src/content/pages/contact.md +16 -16
- package/demo/src/content/pages/get-started.md +20 -20
- package/demo/src/content/pages/home.md +26 -26
- package/demo/src/content/pages/page-not-found.md +11 -11
- package/demo/src/content/pages/privacy-policy.md +24 -24
- package/demo/src/data/blocks.json +25 -25
- package/demo/src/data/booking.json +6 -6
- package/demo/src/data/categories/apps.json +6 -6
- package/demo/src/data/categories/design.json +6 -6
- package/demo/src/data/categories/editing.json +6 -6
- package/demo/src/data/categories/security.json +6 -6
- package/demo/src/data/categories/seo.json +6 -6
- package/demo/src/data/colors.json +75 -75
- package/demo/src/data/contact.json +8 -8
- package/demo/src/data/cookies.json +21 -21
- package/demo/src/data/footer.json +27 -27
- package/demo/src/data/menu.json +35 -35
- package/demo/src/data/mobile-menu.json +25 -25
- package/demo/src/data/popups/booking-bar.json +13 -13
- package/demo/src/data/popups/try-the-editor.json +16 -16
- package/demo/src/data/standard-pages.json +8 -8
- package/demo/src/data/testimonials/sample-bakery.json +10 -10
- package/demo/src/data/testimonials/sample-clinic.json +10 -10
- package/demo/src/data/testimonials/sample-studio.json +10 -10
- package/demo/src/site/colors.ts +11 -11
- package/demo/src/site/config.ts +19 -19
- package/icons/lucide/LICENSE +43 -43
- package/icons/lucide/address-book.svg +1 -1
- package/icons/lucide/app-window.svg +1 -1
- package/icons/lucide/arrow-counter-clockwise.svg +1 -1
- package/icons/lucide/arrow-down.svg +1 -1
- package/icons/lucide/arrow-left.svg +1 -1
- package/icons/lucide/arrow-right.svg +1 -1
- package/icons/lucide/arrow-square-out.svg +1 -1
- package/icons/lucide/arrow-u-up-left.svg +1 -1
- package/icons/lucide/arrow-u-up-right.svg +1 -1
- package/icons/lucide/arrow-up-right.svg +1 -1
- package/icons/lucide/arrow-up.svg +1 -1
- package/icons/lucide/arrows-down-up.svg +1 -1
- package/icons/lucide/arrows-in-line-horizontal.svg +1 -1
- package/icons/lucide/arrows-out-line-horizontal.svg +1 -1
- package/icons/lucide/article.svg +1 -1
- package/icons/lucide/bank.svg +1 -1
- package/icons/lucide/bell.svg +1 -1
- package/icons/lucide/bicycle.svg +1 -1
- package/icons/lucide/binoculars.svg +1 -1
- package/icons/lucide/book-open-text.svg +1 -1
- package/icons/lucide/book-open.svg +1 -1
- package/icons/lucide/browser.svg +1 -1
- package/icons/lucide/buildings.svg +1 -1
- package/icons/lucide/bus.svg +1 -1
- package/icons/lucide/calendar-blank.svg +1 -1
- package/icons/lucide/calendar-check.svg +1 -1
- package/icons/lucide/car.svg +1 -1
- package/icons/lucide/cards.svg +1 -1
- package/icons/lucide/caret-down.svg +1 -1
- package/icons/lucide/caret-left.svg +1 -1
- package/icons/lucide/caret-right.svg +1 -1
- package/icons/lucide/caret-up.svg +1 -1
- package/icons/lucide/certificate.svg +1 -1
- package/icons/lucide/chart-line-up.svg +1 -1
- package/icons/lucide/chats.svg +1 -1
- package/icons/lucide/check-circle.svg +1 -1
- package/icons/lucide/check.svg +1 -1
- package/icons/lucide/circle-half.svg +1 -1
- package/icons/lucide/circle.svg +1 -1
- package/icons/lucide/clock-counter-clockwise.svg +1 -1
- package/icons/lucide/clock.svg +1 -1
- package/icons/lucide/code.svg +1 -1
- package/icons/lucide/coffee.svg +1 -1
- package/icons/lucide/columns.svg +1 -1
- package/icons/lucide/cookie.svg +1 -1
- package/icons/lucide/copy.svg +1 -1
- package/icons/lucide/credit-card.svg +1 -1
- package/icons/lucide/currency-circle-dollar.svg +1 -1
- package/icons/lucide/cursor-click.svg +1 -1
- package/icons/lucide/database.svg +1 -1
- package/icons/lucide/desktop.svg +1 -1
- package/icons/lucide/device-mobile.svg +1 -1
- package/icons/lucide/door-open.svg +1 -1
- package/icons/lucide/download-simple.svg +1 -1
- package/icons/lucide/envelope-simple.svg +1 -1
- package/icons/lucide/eye-slash.svg +1 -1
- package/icons/lucide/eye.svg +1 -1
- package/icons/lucide/file-pdf.svg +1 -1
- package/icons/lucide/file-text.svg +1 -1
- package/icons/lucide/file-video.svg +1 -1
- package/icons/lucide/file-zip.svg +1 -1
- package/icons/lucide/flower-lotus.svg +1 -1
- package/icons/lucide/folder-simple.svg +1 -1
- package/icons/lucide/funnel.svg +1 -1
- package/icons/lucide/gauge.svg +1 -1
- package/icons/lucide/gear.svg +1 -1
- package/icons/lucide/github-logo.svg +1 -1
- package/icons/lucide/globe.svg +1 -1
- package/icons/lucide/google-logo.svg +1 -1
- package/icons/lucide/graduation-cap.svg +1 -1
- package/icons/lucide/hammer.svg +1 -1
- package/icons/lucide/hand-heart.svg +1 -1
- package/icons/lucide/handshake.svg +1 -1
- package/icons/lucide/hard-drives.svg +1 -1
- package/icons/lucide/heart.svg +1 -1
- package/icons/lucide/house.svg +1 -1
- package/icons/lucide/image-square.svg +1 -1
- package/icons/lucide/image.svg +1 -1
- package/icons/lucide/info.svg +1 -1
- package/icons/lucide/keyboard.svg +1 -1
- package/icons/lucide/leaf.svg +1 -1
- package/icons/lucide/lifebuoy.svg +1 -1
- package/icons/lucide/lightbulb.svg +1 -1
- package/icons/lucide/link-break.svg +1 -1
- package/icons/lucide/link-simple.svg +1 -1
- package/icons/lucide/list-bullets.svg +1 -1
- package/icons/lucide/list-checks.svg +1 -1
- package/icons/lucide/list-numbers.svg +1 -1
- package/icons/lucide/list.svg +1 -1
- package/icons/lucide/lock-simple-open.svg +1 -1
- package/icons/lucide/lock-simple.svg +1 -1
- package/icons/lucide/magnifying-glass.svg +1 -1
- package/icons/lucide/map-pin.svg +1 -1
- package/icons/lucide/map-trifold.svg +1 -1
- package/icons/lucide/medal.svg +1 -1
- package/icons/lucide/megaphone.svg +1 -1
- package/icons/lucide/minus.svg +1 -1
- package/icons/lucide/moon.svg +1 -1
- package/icons/lucide/newspaper.svg +1 -1
- package/icons/lucide/pack.json +23 -23
- package/icons/lucide/paint-brush-broad.svg +1 -1
- package/icons/lucide/palette.svg +1 -1
- package/icons/lucide/paper-plane-tilt.svg +1 -1
- package/icons/lucide/pencil-simple.svg +1 -1
- package/icons/lucide/phone.svg +1 -1
- package/icons/lucide/play-fill.svg +1 -1
- package/icons/lucide/plus.svg +1 -1
- package/icons/lucide/prohibit.svg +1 -1
- package/icons/lucide/puzzle-piece.svg +1 -1
- package/icons/lucide/question.svg +1 -1
- package/icons/lucide/quotes.svg +1 -1
- package/icons/lucide/rows.svg +1 -1
- package/icons/lucide/ruler.svg +1 -1
- package/icons/lucide/scan.svg +1 -1
- package/icons/lucide/shapes.svg +1 -1
- package/icons/lucide/share-network.svg +1 -1
- package/icons/lucide/shield-check.svg +1 -1
- package/icons/lucide/sidebar-simple.svg +1 -1
- package/icons/lucide/sign-out.svg +1 -1
- package/icons/lucide/signpost.svg +1 -1
- package/icons/lucide/sliders-horizontal.svg +1 -1
- package/icons/lucide/smiley.svg +1 -1
- package/icons/lucide/sparkle.svg +1 -1
- package/icons/lucide/square-half-bottom.svg +1 -1
- package/icons/lucide/square.svg +1 -1
- package/icons/lucide/squares-four.svg +1 -1
- package/icons/lucide/sticker.svg +1 -1
- package/icons/lucide/storefront.svg +1 -1
- package/icons/lucide/sun.svg +1 -1
- package/icons/lucide/swatches.svg +1 -1
- package/icons/lucide/tag.svg +1 -1
- package/icons/lucide/text-aa.svg +1 -1
- package/icons/lucide/text-align-left.svg +1 -1
- package/icons/lucide/text-b.svg +1 -1
- package/icons/lucide/text-h-one.svg +1 -1
- package/icons/lucide/text-h-three.svg +1 -1
- package/icons/lucide/text-h-two.svg +1 -1
- package/icons/lucide/text-italic.svg +1 -1
- package/icons/lucide/text-t.svg +1 -1
- package/icons/lucide/ticket.svg +1 -1
- package/icons/lucide/toggle-right.svg +1 -1
- package/icons/lucide/train.svg +1 -1
- package/icons/lucide/trash.svg +1 -1
- package/icons/lucide/upload-simple.svg +1 -1
- package/icons/lucide/user-circle.svg +1 -1
- package/icons/lucide/user.svg +1 -1
- package/icons/lucide/users-three.svg +1 -1
- package/icons/lucide/users.svg +1 -1
- package/icons/lucide/video-camera.svg +1 -1
- package/icons/lucide/warning-circle.svg +1 -1
- package/icons/lucide/warning.svg +1 -1
- package/icons/lucide/wave-sine.svg +1 -1
- package/icons/lucide/wheelchair.svg +1 -1
- package/icons/lucide/wrench.svg +1 -1
- package/icons/lucide/x.svg +1 -1
- package/icons/material-symbols/LICENSE +201 -201
- package/icons/material-symbols/address-book.svg +1 -1
- package/icons/material-symbols/app-window.svg +1 -1
- package/icons/material-symbols/arrow-counter-clockwise.svg +1 -1
- package/icons/material-symbols/arrow-down.svg +1 -1
- package/icons/material-symbols/arrow-left.svg +1 -1
- package/icons/material-symbols/arrow-right.svg +1 -1
- package/icons/material-symbols/arrow-square-out.svg +1 -1
- package/icons/material-symbols/arrow-u-up-left.svg +1 -1
- package/icons/material-symbols/arrow-u-up-right.svg +1 -1
- package/icons/material-symbols/arrow-up-right.svg +1 -1
- package/icons/material-symbols/arrow-up.svg +1 -1
- package/icons/material-symbols/arrows-down-up.svg +1 -1
- package/icons/material-symbols/arrows-in-line-horizontal.svg +1 -1
- package/icons/material-symbols/arrows-out-line-horizontal.svg +1 -1
- package/icons/material-symbols/article.svg +1 -1
- package/icons/material-symbols/bank.svg +1 -1
- package/icons/material-symbols/bell.svg +1 -1
- package/icons/material-symbols/bicycle.svg +1 -1
- package/icons/material-symbols/binoculars.svg +1 -1
- package/icons/material-symbols/book-open-text.svg +1 -1
- package/icons/material-symbols/book-open.svg +1 -1
- package/icons/material-symbols/browser.svg +1 -1
- package/icons/material-symbols/buildings.svg +1 -1
- package/icons/material-symbols/bus.svg +1 -1
- package/icons/material-symbols/calendar-blank.svg +1 -1
- package/icons/material-symbols/calendar-check.svg +1 -1
- package/icons/material-symbols/car.svg +1 -1
- package/icons/material-symbols/cards.svg +1 -1
- package/icons/material-symbols/caret-down.svg +1 -1
- package/icons/material-symbols/caret-left.svg +1 -1
- package/icons/material-symbols/caret-right.svg +1 -1
- package/icons/material-symbols/caret-up.svg +1 -1
- package/icons/material-symbols/certificate.svg +1 -1
- package/icons/material-symbols/chart-line-up.svg +1 -1
- package/icons/material-symbols/chats.svg +1 -1
- package/icons/material-symbols/check-circle.svg +1 -1
- package/icons/material-symbols/check.svg +1 -1
- package/icons/material-symbols/circle-half.svg +1 -1
- package/icons/material-symbols/circle.svg +1 -1
- package/icons/material-symbols/clock-counter-clockwise.svg +1 -1
- package/icons/material-symbols/clock.svg +1 -1
- package/icons/material-symbols/code.svg +1 -1
- package/icons/material-symbols/coffee.svg +1 -1
- package/icons/material-symbols/columns.svg +1 -1
- package/icons/material-symbols/cookie.svg +1 -1
- package/icons/material-symbols/copy.svg +1 -1
- package/icons/material-symbols/credit-card.svg +1 -1
- package/icons/material-symbols/currency-circle-dollar.svg +1 -1
- package/icons/material-symbols/cursor-click.svg +1 -1
- package/icons/material-symbols/database.svg +1 -1
- package/icons/material-symbols/desktop.svg +1 -1
- package/icons/material-symbols/device-mobile.svg +1 -1
- package/icons/material-symbols/door-open.svg +1 -1
- package/icons/material-symbols/download-simple.svg +1 -1
- package/icons/material-symbols/envelope-simple.svg +1 -1
- package/icons/material-symbols/eye-slash.svg +1 -1
- package/icons/material-symbols/eye.svg +1 -1
- package/icons/material-symbols/file-pdf.svg +1 -1
- package/icons/material-symbols/file-text.svg +1 -1
- package/icons/material-symbols/file-video.svg +1 -1
- package/icons/material-symbols/file-zip.svg +1 -1
- package/icons/material-symbols/flower-lotus.svg +1 -1
- package/icons/material-symbols/folder-simple.svg +1 -1
- package/icons/material-symbols/funnel.svg +1 -1
- package/icons/material-symbols/gauge.svg +1 -1
- package/icons/material-symbols/gear.svg +1 -1
- package/icons/material-symbols/github-logo.svg +1 -1
- package/icons/material-symbols/globe.svg +1 -1
- package/icons/material-symbols/google-logo.svg +1 -1
- package/icons/material-symbols/graduation-cap.svg +1 -1
- package/icons/material-symbols/hammer.svg +1 -1
- package/icons/material-symbols/hand-heart.svg +1 -1
- package/icons/material-symbols/handshake.svg +1 -1
- package/icons/material-symbols/hard-drives.svg +1 -1
- package/icons/material-symbols/heart.svg +1 -1
- package/icons/material-symbols/house.svg +1 -1
- package/icons/material-symbols/image-square.svg +1 -1
- package/icons/material-symbols/image.svg +1 -1
- package/icons/material-symbols/info.svg +1 -1
- package/icons/material-symbols/keyboard.svg +1 -1
- package/icons/material-symbols/leaf.svg +1 -1
- package/icons/material-symbols/lifebuoy.svg +1 -1
- package/icons/material-symbols/lightbulb.svg +1 -1
- package/icons/material-symbols/link-break.svg +1 -1
- package/icons/material-symbols/link-simple.svg +1 -1
- package/icons/material-symbols/list-bullets.svg +1 -1
- package/icons/material-symbols/list-checks.svg +1 -1
- package/icons/material-symbols/list-numbers.svg +1 -1
- package/icons/material-symbols/list.svg +1 -1
- package/icons/material-symbols/lock-simple-open.svg +1 -1
- package/icons/material-symbols/lock-simple.svg +1 -1
- package/icons/material-symbols/magnifying-glass.svg +1 -1
- package/icons/material-symbols/map-pin.svg +1 -1
- package/icons/material-symbols/map-trifold.svg +1 -1
- package/icons/material-symbols/medal.svg +1 -1
- package/icons/material-symbols/megaphone.svg +1 -1
- package/icons/material-symbols/minus.svg +1 -1
- package/icons/material-symbols/moon.svg +1 -1
- package/icons/material-symbols/newspaper.svg +1 -1
- package/icons/material-symbols/pack.json +29 -29
- package/icons/material-symbols/paint-brush-broad.svg +1 -1
- package/icons/material-symbols/palette.svg +1 -1
- package/icons/material-symbols/paper-plane-tilt.svg +1 -1
- package/icons/material-symbols/pencil-simple.svg +1 -1
- package/icons/material-symbols/phone.svg +1 -1
- package/icons/material-symbols/play-fill.svg +1 -1
- package/icons/material-symbols/plus.svg +1 -1
- package/icons/material-symbols/prohibit.svg +1 -1
- package/icons/material-symbols/puzzle-piece.svg +1 -1
- package/icons/material-symbols/question.svg +1 -1
- package/icons/material-symbols/quotes.svg +1 -1
- package/icons/material-symbols/rows.svg +1 -1
- package/icons/material-symbols/ruler.svg +1 -1
- package/icons/material-symbols/scan.svg +1 -1
- package/icons/material-symbols/shapes.svg +1 -1
- package/icons/material-symbols/share-network.svg +1 -1
- package/icons/material-symbols/shield-check.svg +1 -1
- package/icons/material-symbols/sidebar-simple.svg +1 -1
- package/icons/material-symbols/sign-out.svg +1 -1
- package/icons/material-symbols/signpost.svg +1 -1
- package/icons/material-symbols/sliders-horizontal.svg +1 -1
- package/icons/material-symbols/smiley.svg +1 -1
- package/icons/material-symbols/sparkle.svg +1 -1
- package/icons/material-symbols/square-half-bottom.svg +1 -1
- package/icons/material-symbols/square.svg +1 -1
- package/icons/material-symbols/squares-four.svg +1 -1
- package/icons/material-symbols/sticker.svg +1 -1
- package/icons/material-symbols/storefront.svg +1 -1
- package/icons/material-symbols/sun.svg +1 -1
- package/icons/material-symbols/swatches.svg +1 -1
- package/icons/material-symbols/tag.svg +1 -1
- package/icons/material-symbols/text-aa.svg +1 -1
- package/icons/material-symbols/text-align-left.svg +1 -1
- package/icons/material-symbols/text-b.svg +1 -1
- package/icons/material-symbols/text-h-one.svg +1 -1
- package/icons/material-symbols/text-h-three.svg +1 -1
- package/icons/material-symbols/text-h-two.svg +1 -1
- package/icons/material-symbols/text-italic.svg +1 -1
- package/icons/material-symbols/text-t.svg +1 -1
- package/icons/material-symbols/ticket.svg +1 -1
- package/icons/material-symbols/toggle-right.svg +1 -1
- package/icons/material-symbols/train.svg +1 -1
- package/icons/material-symbols/trash.svg +1 -1
- package/icons/material-symbols/upload-simple.svg +1 -1
- package/icons/material-symbols/user-circle.svg +1 -1
- package/icons/material-symbols/user.svg +1 -1
- package/icons/material-symbols/users-three.svg +1 -1
- package/icons/material-symbols/users.svg +1 -1
- package/icons/material-symbols/video-camera.svg +1 -1
- package/icons/material-symbols/warning-circle.svg +1 -1
- package/icons/material-symbols/warning.svg +1 -1
- package/icons/material-symbols/wave-sine.svg +1 -1
- package/icons/material-symbols/wheelchair.svg +1 -1
- package/icons/material-symbols/wrench.svg +1 -1
- package/icons/material-symbols/x.svg +1 -1
- package/icons/phosphor/pack.json +8 -8
- package/lib/apps.mjs +142 -139
- package/lib/apps.test.d.mts +1 -0
- package/lib/apps.test.mjs +50 -0
- package/lib/blocks.mjs +90 -90
- package/lib/caseCollisions.d.mts +4 -0
- package/lib/caseCollisions.mjs +62 -0
- package/lib/caseCollisions.test.d.mts +1 -0
- package/lib/caseCollisions.test.mjs +74 -0
- package/lib/colors.ts +86 -86
- package/lib/contactBar.ts +18 -18
- package/lib/contracts.d.mts +15 -0
- package/lib/contracts.mjs +17 -0
- package/lib/cookieCategories.mjs +28 -28
- package/lib/crop.mjs +83 -83
- package/lib/csp.mjs +130 -130
- package/lib/cspSources.mjs +60 -60
- package/lib/dynamic-colors.ts +426 -426
- package/lib/git.mjs +64 -64
- package/lib/hooks.ts +51 -51
- package/lib/inline.ts +20 -20
- package/lib/license-texts/Apache-2.0.txt +190 -190
- package/lib/license-texts/BSD-2-Clause.txt +24 -24
- package/lib/license-texts/BSD-3-Clause.txt +28 -28
- package/lib/license-texts/ISC.txt +15 -15
- package/lib/license-texts/MIT.txt +21 -21
- package/lib/licenses.d.mts +1 -1
- package/lib/licenses.mjs +683 -683
- package/lib/markdown.ts +42 -42
- package/lib/motion-schemes.mjs +5 -5
- package/lib/motion.ts +131 -131
- package/lib/notice.mjs +34 -34
- package/lib/scheduled.mjs +37 -37
- package/lib/snackbar.ts +149 -149
- package/lib/status.mjs +18 -18
- package/lib/storeEntries.d.mts +18 -0
- package/lib/storeEntries.mjs +64 -0
- package/lib/storeEntries.test.d.mts +1 -0
- package/lib/storeEntries.test.mjs +71 -0
- package/lib/svg.mjs +231 -231
- package/lib/text-colors.mjs +43 -43
- package/lib/video-id.mjs +72 -72
- package/lib/video.mjs +91 -91
- package/package.json +136 -131
- package/pages/404.astro +10 -10
- package/pages/[...slug].astro +51 -51
- package/pages/_headers.txt +31 -31
- package/pages/blog/index.astro +10 -10
- package/pages/blog/kategori/[category].astro +18 -18
- package/pages/editor/code-images.json.js +25 -25
- package/pages/editor/index.astro +75 -75
- package/pages/editor/manifest.webmanifest.js +23 -23
- package/pages/editor/sw.js +33 -33
- package/pages/editor/sw.js.js +4 -4
- package/pages/editor/thumbnails.json.js +21 -21
- package/pages/editor/version.json.js +22 -22
- package/pages/headers.js +4 -4
- package/pages/index.astro +10 -10
- package/pages/ny.astro +6 -6
- package/pages/robots.txt.js +3 -3
- package/pages/rss.xml.js +20 -20
- package/scripts/app-screenshots.mjs +164 -164
- package/scripts/app-workers.mjs +6 -6
- package/scripts/bin.mjs +12 -12
- package/scripts/built-site.mjs +134 -99
- package/scripts/check-consent.mjs +113 -113
- package/scripts/check-content.mjs +151 -149
- package/scripts/check-demo.mjs +24 -24
- package/scripts/check-store.mjs +160 -0
- package/scripts/check-themes.mjs +45 -45
- package/scripts/check-worker.mjs +569 -569
- package/scripts/compare-html.mjs +81 -81
- package/scripts/declarations.mjs +10 -0
- package/scripts/declarations.test.mjs +32 -0
- package/scripts/demo-site.mjs +42 -42
- package/scripts/editor-icons.mjs +56 -56
- package/scripts/editor-roundtrip.mjs +134 -134
- package/scripts/editor-screens.mjs +101 -101
- package/scripts/git-env.mjs +9 -9
- package/scripts/icon-packs.mjs +151 -151
- package/scripts/link-counts.mjs +22 -22
- package/scripts/page-colors.mjs +42 -42
- package/scripts/releases.mjs +80 -80
- package/scripts/responsive-images.mjs +94 -94
- package/scripts/scheduled-list.mjs +15 -15
- package/scripts/theme-screenshots.mjs +88 -88
- package/scripts/types.mjs +17 -21
- package/scripts/video-thumbnails.mjs +89 -89
- package/scripts/worker-modules.mjs +34 -34
- package/site/appCookies.mjs +74 -74
- package/site/apps.ts +21 -21
- package/site/autolinks.mjs +200 -200
- package/site/blockScripts.ts +31 -31
- package/site/categories.ts +16 -16
- package/site/consent.ts +26 -26
- package/site/content.config.ts +84 -84
- package/site/content.ts +104 -104
- package/site/cookieList.ts +17 -17
- package/site/defineSite.d.mts +2 -14
- package/site/defineSite.mjs +131 -136
- package/site/directives/interact.mjs +31 -31
- package/site/editor-version.mjs +26 -26
- package/site/fill.ts +13 -13
- package/site/format.ts +11 -11
- package/site/home.ts +66 -66
- package/site/iconPacks.mjs +43 -43
- package/site/icons.mjs +605 -605
- package/site/images.mjs +157 -157
- package/site/motion.ts +13 -13
- package/site/noindex.mjs +21 -21
- package/site/pageColors.ts +110 -110
- package/site/popups.ts +98 -98
- package/site/schema.ts +189 -189
- package/site/sections.ts +3 -3
- package/site/seo.ts +28 -28
- package/site/site.ts +76 -76
- package/site/siteConfig.mjs +8 -8
- package/site/siteCsp.mjs +75 -75
- package/site/siteModules.mjs +27 -27
- package/site/standardPages.ts +59 -59
- package/site/storeTheme.d.mts +6 -0
- package/site/storeTheme.mjs +29 -0
- package/site/storeTheme.test.d.mts +1 -0
- package/site/storeTheme.test.mjs +53 -0
- package/site/testimonials.ts +48 -48
- package/site/text.ts +43 -43
- package/site/theme.mjs +483 -472
- package/site/tracking.client.ts +225 -225
- package/site/tracking.ts +9 -9
- package/src/ActionParts.tsx +205 -205
- package/src/Advanced.tsx +152 -152
- package/src/App.tsx +901 -904
- package/src/AppList.tsx +1362 -1345
- package/src/BlockDialog.tsx +360 -360
- package/src/BlockParts.tsx +652 -652
- package/src/BlockSettings.tsx +533 -533
- package/src/BrandForm.tsx +164 -164
- package/src/Colors.tsx +476 -476
- package/src/CommunicationParts.tsx +199 -199
- package/src/CompanyForm.tsx +209 -209
- package/src/Consents.tsx +175 -175
- package/src/ContainmentParts.tsx +185 -185
- package/src/Crop.tsx +152 -152
- package/src/DataForm.tsx +434 -434
- package/src/Deleted.tsx +177 -177
- package/src/EntryForm.tsx +740 -740
- package/src/FileView.tsx +30 -30
- package/src/FormFrame.tsx +237 -237
- package/src/Keywords.tsx +225 -225
- package/src/Library.tsx +1563 -1563
- package/src/Licenses.tsx +336 -336
- package/src/LinkSheet.tsx +138 -138
- package/src/MarkdownEditor.tsx +1075 -1075
- package/src/Media.tsx +677 -677
- package/src/NavigationParts.tsx +350 -350
- package/src/NavigationRestParts.tsx +247 -247
- package/src/Notifications.tsx +59 -59
- package/src/PagePicker.tsx +136 -136
- package/src/Parts.tsx +991 -991
- package/src/PartsShown.tsx +168 -168
- package/src/PickerParts.tsx +183 -183
- package/src/Redirects.tsx +450 -450
- package/src/Screen.tsx +184 -184
- package/src/SectionsField.tsx +65 -65
- package/src/SelectionParts.tsx +134 -134
- package/src/SeoScores.tsx +184 -184
- package/src/Sheet.tsx +35 -35
- package/src/ThemeStore.tsx +376 -376
- package/src/Tokens.tsx +346 -346
- package/src/Versions.tsx +214 -214
- package/src/addresses.ts +75 -75
- package/src/allIcons.ts +7 -7
- package/src/appFiles.ts +29 -29
- package/src/apps.ts +281 -281
- package/src/ask.tsx +123 -123
- package/src/blocks.ts +251 -251
- package/src/brand.ts +153 -153
- package/src/cache.ts +42 -42
- package/src/check.ts +285 -285
- package/src/checkSite.ts +256 -256
- package/src/{consents.ts → consentData.ts} +26 -26
- package/src/cookieList.ts +70 -70
- package/src/countries.ts +59 -59
- package/src/deploy.ts +155 -155
- package/src/editor.css +602 -602
- package/src/examples.ts +85 -85
- package/src/fields.tsx +942 -942
- package/src/frontmatter.mjs +42 -42
- package/src/github.ts +376 -376
- package/src/i18n/da-DK/advanced.ts +28 -28
- package/src/i18n/da-DK/app.ts +71 -71
- package/src/i18n/da-DK/apps.ts +90 -90
- package/src/i18n/da-DK/blockSettings.ts +38 -38
- package/src/i18n/da-DK/blocks.ts +408 -408
- package/src/i18n/da-DK/check.ts +25 -25
- package/src/i18n/da-DK/colors.ts +64 -64
- package/src/i18n/da-DK/common.ts +118 -118
- package/src/i18n/da-DK/company.ts +24 -24
- package/src/i18n/da-DK/consents.ts +23 -23
- package/src/i18n/da-DK/forms.ts +116 -116
- package/src/i18n/da-DK/history.ts +35 -35
- package/src/i18n/da-DK/index.ts +49 -49
- package/src/i18n/da-DK/keywords.ts +19 -19
- package/src/i18n/da-DK/library.ts +135 -135
- package/src/i18n/da-DK/licenses.ts +25 -25
- package/src/i18n/da-DK/media.ts +79 -79
- package/src/i18n/da-DK/parts.ts +696 -696
- package/src/i18n/da-DK/preview.ts +13 -13
- package/src/i18n/da-DK/redirects.ts +51 -51
- package/src/i18n/da-DK/seo.ts +20 -20
- package/src/i18n/da-DK/text.ts +35 -35
- package/src/i18n/da-DK/theme.ts +41 -41
- package/src/i18n/en-US/advanced.ts +32 -32
- package/src/i18n/en-US/app.ts +84 -84
- package/src/i18n/en-US/apps.ts +134 -134
- package/src/i18n/en-US/blockSettings.ts +48 -48
- package/src/i18n/en-US/blocks.ts +441 -441
- package/src/i18n/en-US/check.ts +31 -31
- package/src/i18n/en-US/colors.ts +82 -82
- package/src/i18n/en-US/common.ts +144 -144
- package/src/i18n/en-US/company.ts +25 -25
- package/src/i18n/en-US/consents.ts +25 -25
- package/src/i18n/en-US/forms.ts +145 -145
- package/src/i18n/en-US/history.ts +43 -43
- package/src/i18n/en-US/index.ts +51 -51
- package/src/i18n/en-US/keywords.ts +24 -24
- package/src/i18n/en-US/library.ts +176 -176
- package/src/i18n/en-US/licenses.ts +36 -36
- package/src/i18n/en-US/media.ts +80 -80
- package/src/i18n/en-US/parts.ts +718 -718
- package/src/i18n/en-US/preview.ts +15 -15
- package/src/i18n/en-US/redirects.ts +66 -66
- package/src/i18n/en-US/seo.ts +26 -26
- package/src/i18n/en-US/text.ts +41 -41
- package/src/i18n/en-US/theme.ts +41 -41
- package/src/i18n/index.ts +124 -124
- package/src/icon.tsx +160 -160
- package/src/iconPacks.ts +89 -89
- package/src/images.ts +163 -163
- package/src/{licenses.ts → licenseData.ts} +79 -79
- package/src/markdown.mjs +204 -204
- package/src/nav.ts +68 -68
- package/src/notFound.ts +28 -28
- package/src/{notifications.ts → notificationData.ts} +223 -223
- package/src/pagePreview.tsx +204 -204
- package/src/r2Caching.ts +55 -55
- package/src/{redirects.ts → redirectData.ts} +149 -149
- package/src/registry.tsx +188 -188
- package/src/schema.ts +417 -417
- package/src/sections.mjs +303 -303
- package/src/seo.ts +333 -333
- package/src/shared.ts +44 -44
- package/src/sidebar.ts +31 -31
- package/src/site.ts +317 -317
- package/src/standard/Block.astro +19 -19
- package/src/standard/BlockSite.astro +18 -18
- package/src/standard/accordion/index.tsx +47 -47
- package/src/standard/accordion/load.ts +23 -23
- package/src/standard/accordion/shared.ts +15 -15
- package/src/standard/accordion/view.ts +32 -32
- package/src/standard/buttons/fields.ts +98 -98
- package/src/standard/buttons/index.tsx +23 -23
- package/src/standard/buttons/load.ts +34 -34
- package/src/standard/buttons/shared.ts +12 -12
- package/src/standard/buttons/view.ts +30 -30
- package/src/standard/cards/index.tsx +71 -71
- package/src/standard/cards/load.ts +17 -17
- package/src/standard/cards/shared.ts +27 -27
- package/src/standard/cards/view.ts +29 -29
- package/src/standard/checklist/index.tsx +27 -27
- package/src/standard/checklist/load.ts +5 -5
- package/src/standard/checklist/view.ts +13 -13
- package/src/standard/cookies/index.tsx +17 -17
- package/src/standard/cookies/list.ts +56 -56
- package/src/standard/cookies/load.ts +11 -11
- package/src/standard/cookies/shared.ts +20 -20
- package/src/standard/cookies/view.ts +28 -28
- package/src/standard/faq/index.tsx +29 -29
- package/src/standard/faq/load.ts +14 -14
- package/src/standard/faq/view.ts +21 -21
- package/src/standard/head.ts +23 -23
- package/src/standard/hero/fields.ts +48 -48
- package/src/standard/hero/index.tsx +57 -57
- package/src/standard/hero/load.ts +23 -23
- package/src/standard/hero/view.ts +38 -38
- package/src/standard/links/index.tsx +41 -41
- package/src/standard/links/load.ts +17 -17
- package/src/standard/links/view.ts +25 -25
- package/src/standard/list/index.tsx +50 -50
- package/src/standard/list/load.ts +5 -5
- package/src/standard/list/view.ts +18 -18
- package/src/standard/load.ts +7 -7
- package/src/standard/notice/index.tsx +30 -30
- package/src/standard/notice/load.ts +16 -16
- package/src/standard/notice/view.ts +10 -10
- package/src/standard/points/index.tsx +42 -42
- package/src/standard/points/load.ts +5 -5
- package/src/standard/points/view.ts +12 -12
- package/src/standard/posts/index.tsx +132 -132
- package/src/standard/posts/load.ts +36 -36
- package/src/standard/posts/shared.ts +21 -21
- package/src/standard/posts/view.ts +63 -63
- package/src/standard/pricecards/index.tsx +57 -57
- package/src/standard/pricecards/load.ts +11 -11
- package/src/standard/pricecards/view.ts +50 -50
- package/src/standard/sharedTexts.ts +6 -6
- package/src/standard/site.ts +124 -124
- package/src/standard/siteLooks.ts +19 -19
- package/src/standard/sites.ts +13 -13
- package/src/standard/steps/index.tsx +28 -28
- package/src/standard/steps/load.ts +5 -5
- package/src/standard/steps/view.ts +11 -11
- package/src/standard/testimonials/index.tsx +87 -87
- package/src/standard/testimonials/list.ts +43 -43
- package/src/standard/testimonials/load.ts +58 -58
- package/src/standard/testimonials/shared.ts +13 -13
- package/src/standard/testimonials/view.ts +76 -76
- package/src/standard/themeBlocks.ts +13 -13
- package/src/standard/video/index.tsx +23 -23
- package/src/standard/video/load.ts +10 -10
- package/src/standard/video/view.ts +42 -42
- package/src/standard/view.tsx +105 -105
- package/src/standard/views.ts +37 -37
- package/src/store.ts +479 -499
- package/src/theme.ts +90 -90
- package/src/themeUi.ts +97 -97
- package/src/themes.ts +91 -91
- package/src/ui.tsx +3402 -3402
- package/src/virtual.d.ts +5 -5
- package/src/when.ts +22 -22
- package/starter/.githooks/pre-push +4 -4
- package/starter/.nvmrc +1 -1
- package/starter/.prettierignore +11 -11
- package/starter/.prettierrc.json +7 -7
- package/starter/README.md +27 -26
- package/starter/astro.config.mjs +5 -5
- package/starter/package.json +67 -67
- package/starter/public/_redirects +1 -1
- package/starter/public/favicon.svg +1 -1
- package/starter/public/logo.svg +1 -1
- package/starter/src/content/pages/blog.md +8 -8
- package/starter/src/content/pages/forside.md +9 -9
- package/starter/src/content/pages/kontakt.md +7 -7
- package/starter/src/content/pages/privatlivspolitik.md +9 -9
- package/starter/src/content/pages/siden-findes-ikke.md +7 -7
- package/starter/src/content.config.ts +2 -2
- package/starter/src/data/apps.json +1 -1
- package/starter/src/data/block-settings.json +3 -3
- package/starter/src/data/blocks.json +1 -1
- package/starter/src/data/booking.json +6 -6
- package/starter/src/data/colors.json +70 -70
- package/starter/src/data/contact.json +8 -8
- package/starter/src/data/cookies.json +21 -21
- package/starter/src/data/csp.json +1 -1
- package/starter/src/data/footer.json +15 -15
- package/starter/src/data/internal-links.json +4 -4
- package/starter/src/data/menu.json +4 -4
- package/starter/src/data/mobile-menu.json +4 -4
- package/starter/src/data/old-addresses.json +1 -1
- package/starter/src/data/redirects.json +1 -1
- package/starter/src/data/standard-pages.json +8 -8
- package/starter/src/data/theme.json +1 -1
- package/starter/src/env.d.ts +2 -2
- package/starter/src/site/config.ts +13 -13
- package/starter/src/site/worker.js +14 -14
- package/starter/tsconfig.json +17 -17
- package/starter/worker/apps.js +6 -6
- package/starter/wrangler.jsonc +39 -39
- package/theme/LICENSE +21 -21
- package/theme/blocks/ArrowLink.tsx +14 -14
- package/theme/blocks/BlockHead.tsx +26 -26
- package/theme/blocks/Panel.tsx +32 -32
- package/theme/blocks/Person.tsx +26 -26
- package/theme/blocks/accordion/PageRow.tsx +25 -25
- package/theme/blocks/accordion/View.tsx +17 -17
- package/theme/blocks/buttons/Buttons.tsx +28 -28
- package/theme/blocks/buttons/View.tsx +12 -12
- package/theme/blocks/cards/LinkCards.tsx +72 -72
- package/theme/blocks/cards/View.tsx +20 -20
- package/theme/blocks/checklist/Checks.tsx +15 -15
- package/theme/blocks/checklist/View.tsx +14 -14
- package/theme/blocks/cookies/View.tsx +36 -36
- package/theme/blocks/faq/Accordion.tsx +34 -34
- package/theme/blocks/faq/View.tsx +16 -16
- package/theme/blocks/faq/script.ts +56 -56
- package/theme/blocks/hero/View.tsx +44 -44
- package/theme/blocks/links/LinkGroups.tsx +24 -24
- package/theme/blocks/links/View.tsx +17 -17
- package/theme/blocks/list/Rows.tsx +24 -24
- package/theme/blocks/list/View.tsx +14 -14
- package/theme/blocks/notice/View.tsx +13 -13
- package/theme/blocks/points/PointList.tsx +34 -34
- package/theme/blocks/points/View.tsx +14 -14
- package/theme/blocks/posts/View.tsx +26 -26
- package/theme/blocks/pricecards/View.tsx +40 -40
- package/theme/blocks/steps/StepList.tsx +23 -23
- package/theme/blocks/steps/View.tsx +14 -14
- package/theme/blocks/testimonials/List.tsx +46 -46
- package/theme/blocks/testimonials/Slider.tsx +44 -44
- package/theme/blocks/testimonials/Testimonial.tsx +124 -124
- package/theme/blocks/testimonials/View.tsx +21 -21
- package/theme/blocks/testimonials/script.ts +52 -52
- package/theme/blocks/video/View.tsx +41 -41
- package/theme/components/ActionBar.astro +63 -63
- package/theme/components/AppSlot.astro +21 -21
- package/theme/components/ArrowLink.tsx +21 -21
- package/theme/components/BlogIndex.astro +48 -48
- package/theme/components/BlogPosts.astro +18 -18
- package/theme/components/BlogPosts.tsx +45 -45
- package/theme/components/BookButton.tsx +22 -22
- package/theme/components/Container.astro +11 -11
- package/theme/components/CookieConsent.astro +121 -121
- package/theme/components/EndBlock.astro +21 -21
- package/theme/components/FontPreload.astro +6 -6
- package/theme/components/Footer.astro +85 -85
- package/theme/components/Header.astro +186 -186
- package/theme/components/Icon.astro +16 -16
- package/theme/components/Img.astro +29 -29
- package/theme/components/Img.tsx +33 -33
- package/theme/components/Inline.astro +11 -11
- package/theme/components/Logo.astro +23 -23
- package/theme/components/LogoMark.astro +10 -10
- package/theme/components/Markdown.astro +17 -17
- package/theme/components/MobileMenu.tsx +224 -224
- package/theme/components/MobileNav.astro +33 -33
- package/theme/components/PageHeader.astro +22 -22
- package/theme/components/PageSection.astro +24 -24
- package/theme/components/PhoneButton.tsx +11 -11
- package/theme/components/Popup.astro +145 -145
- package/theme/components/PopupButton.tsx +24 -24
- package/theme/components/PopupView.tsx +48 -48
- package/theme/components/PostList.tsx +58 -58
- package/theme/components/PostMeta.tsx +17 -17
- package/theme/components/RichText.astro +28 -28
- package/theme/components/Section.astro +29 -29
- package/theme/components/SectionHeading.tsx +8 -8
- package/theme/components/TextSection.astro +16 -16
- package/theme/components/home/PageBlock.astro +19 -19
- package/theme/components/home/Text.astro +13 -13
- package/theme/components/loadPopup.ts +22 -22
- package/theme/components/loadPosts.ts +16 -16
- package/theme/components/posts.ts +15 -15
- package/theme/editor/looks.mjs +7 -7
- package/theme/editor/previews.tsx +56 -56
- package/theme/layouts/Base.astro +273 -273
- package/theme/layouts/PageLayout.astro +126 -126
- package/theme/layouts/PostLayout.astro +137 -137
- package/theme/scripts/motion.ts +29 -29
- package/theme/styles/base.css +320 -320
- package/theme/styles/blocks.css +1808 -1808
- package/theme/styles/components.css +206 -206
- package/theme/styles/global.css +1302 -1302
- package/theme/styles/ui.css +6544 -6544
- package/theme/templates/Blog.astro +38 -38
- package/theme/templates/Category.astro +19 -19
- package/theme/templates/Home.astro +36 -36
- package/theme/templates/New.astro +68 -68
- package/theme/templates/NotFound.astro +117 -117
- package/theme/theme.json +28 -28
- package/theme/ui/Badge.tsx +45 -45
- package/theme/ui/BottomSheet.tsx +148 -148
- package/theme/ui/Button.tsx +79 -79
- package/theme/ui/ButtonGroup.tsx +31 -31
- package/theme/ui/Card.tsx +45 -45
- package/theme/ui/Carousel.tsx +124 -124
- package/theme/ui/Checkbox.tsx +59 -59
- package/theme/ui/Chip.tsx +101 -101
- package/theme/ui/ChipSet.tsx +27 -27
- package/theme/ui/DatePicker.tsx +149 -149
- package/theme/ui/DatePickerContainer.tsx +316 -316
- package/theme/ui/Dialog.tsx +100 -100
- package/theme/ui/Divider.tsx +27 -27
- package/theme/ui/ExposedDropdownMenu.tsx +77 -77
- package/theme/ui/Fab.tsx +88 -88
- package/theme/ui/FabMenu.tsx +67 -67
- package/theme/ui/IconButton.tsx +78 -78
- package/theme/ui/List.tsx +287 -287
- package/theme/ui/LoadingIndicator.tsx +29 -29
- package/theme/ui/Menu.tsx +278 -278
- package/theme/ui/NavigationBar.tsx +62 -62
- package/theme/ui/NavigationDrawer.tsx +80 -80
- package/theme/ui/NavigationRail.tsx +154 -154
- package/theme/ui/ProgressIndicator.tsx +162 -162
- package/theme/ui/RadioButton.tsx +50 -50
- package/theme/ui/Search.tsx +129 -129
- package/theme/ui/SegmentedButton.tsx +49 -49
- package/theme/ui/SideSheet.tsx +54 -54
- package/theme/ui/Slider.tsx +155 -155
- package/theme/ui/Snackbar.tsx +67 -67
- package/theme/ui/SplitButton.tsx +67 -67
- package/theme/ui/Switch.tsx +60 -60
- package/theme/ui/Tabs.tsx +114 -114
- package/theme/ui/TextField.tsx +278 -278
- package/theme/ui/TimePicker.tsx +128 -128
- package/theme/ui/TimePickerContainer.tsx +234 -234
- package/theme/ui/Toolbar.tsx +67 -67
- package/theme/ui/Tooltip.tsx +58 -58
- package/theme/ui/TopAppBar.tsx +77 -77
- package/theme/ui/bottomSheet.script.ts +8 -8
- package/theme/ui/{bottomSheet.ts → bottomSheetControl.ts} +211 -211
- package/theme/ui/carousel.script.ts +28 -28
- package/theme/ui/carouselLayout.ts +229 -229
- package/theme/ui/checkbox.script.ts +8 -8
- package/theme/ui/datePicker.script.ts +302 -302
- package/theme/ui/dates.ts +185 -185
- package/theme/ui/{dialog.ts → dialogControl.ts} +48 -48
- package/theme/ui/dropdownMenu.script.ts +166 -166
- package/theme/ui/fabMenu.script.ts +57 -57
- package/theme/ui/navigationRail.script.ts +47 -47
- package/theme/ui/ripple.script.ts +159 -159
- package/theme/ui/search.script.ts +92 -92
- package/theme/ui/{sideSheet.ts → sideSheetControl.ts} +48 -48
- package/theme/ui/slider.script.ts +12 -12
- package/theme/ui/sliderUpdate.ts +52 -52
- package/theme/ui/snackbar.script.ts +16 -16
- package/theme/ui/splitButton.script.ts +63 -63
- package/theme/ui/tabs.script.ts +48 -48
- package/theme/ui/textField.script.ts +17 -17
- package/theme/ui/textFieldUpdate.ts +44 -44
- package/theme/ui/timePicker.script.ts +248 -248
- package/theme/ui/toolbar.script.ts +43 -43
- package/theme/ui/tooltip.script.ts +68 -68
- package/worker/consent.js +141 -141
- package/worker/editor-github.js +167 -167
- package/worker/editor-host.js +74 -74
- package/worker/files.js +401 -401
- package/worker/github.js +36 -36
- package/worker/index.js +188 -184
- package/worker/not-found.js +97 -97
- package/worker/oauth.js +95 -95
- package/worker/publish.js +52 -52
- package/worker/push.js +270 -270
- package/worker/r2-status.js +50 -50
- package/worker/session.js +58 -58
- package/worker/store.js +46 -0
package/theme/styles/blocks.css
CHANGED
|
@@ -1,1808 +1,1808 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The look of the standard blocks (their fields: packages/editor/src/standard/; their markup: blocks/ in this theme), on
|
|
3
|
-
the site and in the editor, in the standard theme. Every colour, shape and motion comes from a CSS variable, which a
|
|
4
|
-
theme sets to its own design in its own CSS:
|
|
5
|
-
|
|
6
|
-
:root { --block-accent: var(--accent); --block-radius: 1.5rem; }
|
|
7
|
-
|
|
8
|
-
Without them, the blocks have a plain look of their own (the values below). Sizes and spacing are
|
|
9
|
-
the blocks' own, in rem; their text has the site's font. Every theme imports this file into its CSS
|
|
10
|
-
(styles/global.css: the standard theme's, another theme's …), which the editor uses too.
|
|
11
|
-
|
|
12
|
-
--block-text text
|
|
13
|
-
--block-muted quieter text (an answer, a step's text)
|
|
14
|
-
--block-accent the one colour: a notice's edge, the step numbers, an open row, the play button,
|
|
15
|
-
a card's icon and link
|
|
16
|
-
--block-accent-hover the accent of a filled button pointed at (ui.css)
|
|
17
|
-
--block-on-accent text on the accent (the step numbers, a filled button)
|
|
18
|
-
--block-surface a raised surface (the rows that fold out, the cards)
|
|
19
|
-
--block-tint a light background (a notice, a video before it is played)
|
|
20
|
-
--block-line lines between rows and along the steps, the edge of a card
|
|
21
|
-
--block-radius the corners of a panel
|
|
22
|
-
--block-radius-small the corners of something smaller in or beside a panel (a picture in a list, a row, a badge's
|
|
23
|
-
square, a step on a time line)
|
|
24
|
-
--block-control-radius the corners of a button and a tag (a pill when large)
|
|
25
|
-
--block-shadow the shadow of a raised panel
|
|
26
|
-
--block-ease the easing of motion (else the motion scheme's, --motion-ease)
|
|
27
|
-
--block-ease-quick the easing of a quick change of state (a colour, an arrow that turns or moves; else the motion
|
|
28
|
-
scheme's, --motion-ease-quick)
|
|
29
|
-
--block-hero-shade, --block-hero-on-shade (optional) the colour a picture behind a hero's text is darkened with,
|
|
30
|
-
and the text's on it; without them the text's colour and the surface's
|
|
31
|
-
--block-page-width, --block-gutter the page's container (its width, gutters included, and its gutter at the
|
|
32
|
-
side), whose left edge the text starts at: how far a banner across the whole width reaches out
|
|
33
|
-
of the text to the window's edges, and where its content starts again (the standard theme's
|
|
34
|
-
Container.astro: 72rem, 1.25rem and 2rem from 48rem)
|
|
35
|
-
|
|
36
|
-
How things move is the site's motion scheme (Material 3's, chosen under "Udseende" › "Bevægelse"; lib/motion.ts), which
|
|
37
|
-
Base.astro writes into the <head> as springs, each its duration and curve, for `transition` and `animation`:
|
|
38
|
-
--motion-spatial-fast, --motion-spatial, --motion-spatial-slow something that moves, grows or changes shape
|
|
39
|
-
--motion-effects-fast, --motion-effects, --motion-effects-slow a colour, a shadow, something that fades
|
|
40
|
-
--motion-spatial-fast-duration … --motion-effects-slow-duration each one's duration alone, for what must last as
|
|
41
|
-
long as it (a visibility that waits for it, a display … allow-discrete)
|
|
42
|
-
--motion-ease, --motion-ease-quick the default spatial and effects curves alone, for a duration of one's own
|
|
43
|
-
Without them (a page without Base.astro's <head>), the values below: the standard scheme's lengths with Material's
|
|
44
|
-
standard curve.
|
|
45
|
-
|
|
46
|
-
A site sets the class `js` on <html> as early as it can (this site: Base.astro): then a long
|
|
47
|
-
testimonial is cut with "Læs mere" from the start; without it, the whole text is shown.
|
|
48
|
-
The mark before the name on a testimonial (.block-testimonial-mark) is the site's own: it is not shown
|
|
49
|
-
until the site gives it a look (the standard theme: an avatar with the name's first letter, its data-initial; another:
|
|
50
|
-
its logo).
|
|
51
|
-
*/
|
|
52
|
-
:where(:root) {
|
|
53
|
-
--block-text: #1f2328;
|
|
54
|
-
--block-muted: #59636e;
|
|
55
|
-
--block-accent: #0969da;
|
|
56
|
-
--block-accent-hover: #0550ae;
|
|
57
|
-
--block-on-accent: #ffffff;
|
|
58
|
-
--block-surface: #ffffff;
|
|
59
|
-
--block-tint: #f2f4f7;
|
|
60
|
-
--block-line: #d8dee4;
|
|
61
|
-
--block-radius: 0.75rem;
|
|
62
|
-
--block-radius-small: 1rem;
|
|
63
|
-
--block-control-radius: 0.5rem;
|
|
64
|
-
--block-shadow: 0 1px 3px rgb(0 0 0 / 0.12);
|
|
65
|
-
--motion-spatial-fast: 230ms cubic-bezier(0.2, 0, 0, 1);
|
|
66
|
-
--motion-spatial: 320ms cubic-bezier(0.2, 0, 0, 1);
|
|
67
|
-
--motion-spatial-slow: 490ms cubic-bezier(0.2, 0, 0, 1);
|
|
68
|
-
--motion-effects-fast: 150ms cubic-bezier(0.2, 0, 0, 1);
|
|
69
|
-
--motion-effects: 240ms cubic-bezier(0.2, 0, 0, 1);
|
|
70
|
-
--motion-effects-slow: 330ms cubic-bezier(0.2, 0, 0, 1);
|
|
71
|
-
--motion-spatial-fast-duration: 230ms;
|
|
72
|
-
--motion-spatial-duration: 320ms;
|
|
73
|
-
--motion-spatial-slow-duration: 490ms;
|
|
74
|
-
--motion-effects-fast-duration: 150ms;
|
|
75
|
-
--motion-effects-duration: 240ms;
|
|
76
|
-
--motion-effects-slow-duration: 330ms;
|
|
77
|
-
/* Tailwind's transition-colors, transition-opacity … without a duration of their own: the default effects spring. */
|
|
78
|
-
--default-transition-duration: var(--motion-effects-duration);
|
|
79
|
-
--default-transition-timing-function: var(--motion-ease-quick, cubic-bezier(0.2, 0, 0, 1));
|
|
80
|
-
--block-ease: var(--motion-ease, cubic-bezier(0.2, 0, 0, 1));
|
|
81
|
-
--block-ease-quick: var(--motion-ease-quick, cubic-bezier(0.2, 0, 0, 1));
|
|
82
|
-
--block-page-width: 72rem;
|
|
83
|
-
--block-gutter: 1.25rem;
|
|
84
|
-
}
|
|
85
|
-
@media (min-width: 48rem) {
|
|
86
|
-
:where(:root) {
|
|
87
|
-
--block-gutter: 2rem;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/* In a site's layer of components, so the site's utilities (a margin on the steps) win over them. */
|
|
92
|
-
@layer components {
|
|
93
|
-
/* A block in the text of a page: the space above and below it. */
|
|
94
|
-
.block-in-text {
|
|
95
|
-
margin-block: 2rem;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/* "Besked": a short notice in a box with the accent along its left edge (notice/). */
|
|
99
|
-
.block-notice {
|
|
100
|
-
border-left: 4px solid var(--block-accent);
|
|
101
|
-
border-radius: var(--block-radius);
|
|
102
|
-
background: var(--block-tint);
|
|
103
|
-
padding: 1rem 1.25rem;
|
|
104
|
-
font-size: var(--type-body-large-size);
|
|
105
|
-
line-height: var(--type-body-large-line-height);
|
|
106
|
-
font-weight: var(--type-body-large-weight);
|
|
107
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/* "Trin": numbered steps along a line (steps/StepList.tsx). */
|
|
111
|
-
.block-steps {
|
|
112
|
-
position: relative;
|
|
113
|
-
max-width: 48rem;
|
|
114
|
-
}
|
|
115
|
-
.block-steps.block-in-text {
|
|
116
|
-
margin-block: 2.5rem;
|
|
117
|
-
}
|
|
118
|
-
.block-steps > :not(:last-child) {
|
|
119
|
-
margin-bottom: 2.5rem;
|
|
120
|
-
}
|
|
121
|
-
.block-steps-line {
|
|
122
|
-
position: absolute;
|
|
123
|
-
top: 1.5rem;
|
|
124
|
-
bottom: 1.5rem;
|
|
125
|
-
left: 1.5rem;
|
|
126
|
-
width: 1px;
|
|
127
|
-
background: var(--block-line);
|
|
128
|
-
}
|
|
129
|
-
.block-step {
|
|
130
|
-
position: relative;
|
|
131
|
-
display: flex;
|
|
132
|
-
gap: 1.25rem;
|
|
133
|
-
}
|
|
134
|
-
.block-step-number {
|
|
135
|
-
position: relative;
|
|
136
|
-
display: grid;
|
|
137
|
-
width: 3rem;
|
|
138
|
-
height: 3rem;
|
|
139
|
-
flex-shrink: 0;
|
|
140
|
-
place-items: center;
|
|
141
|
-
border-radius: 9999px;
|
|
142
|
-
background: var(--block-accent);
|
|
143
|
-
color: var(--block-on-accent);
|
|
144
|
-
font-size: var(--type-title-medium-size);
|
|
145
|
-
line-height: var(--type-title-medium-line-height);
|
|
146
|
-
font-weight: var(--type-title-medium-weight);
|
|
147
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
148
|
-
font-variant-numeric: tabular-nums;
|
|
149
|
-
}
|
|
150
|
-
.block-step-body {
|
|
151
|
-
padding-top: 0.5rem;
|
|
152
|
-
}
|
|
153
|
-
.block-step-title {
|
|
154
|
-
font-size: var(--type-title-large-size);
|
|
155
|
-
line-height: var(--type-title-large-line-height);
|
|
156
|
-
font-weight: var(--type-title-large-weight);
|
|
157
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
158
|
-
}
|
|
159
|
-
.block-step-text {
|
|
160
|
-
margin-top: 0.375rem;
|
|
161
|
-
max-width: 50ch;
|
|
162
|
-
color: var(--block-muted);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/* "Spørgsmål og svar": rows that fold out, one open at a time (faq/Accordion.tsx). */
|
|
166
|
-
.block-accordion {
|
|
167
|
-
max-width: 48rem;
|
|
168
|
-
border-radius: var(--block-radius);
|
|
169
|
-
background: var(--block-surface);
|
|
170
|
-
box-shadow: var(--block-shadow);
|
|
171
|
-
}
|
|
172
|
-
.block-accordion > :not(:last-child) {
|
|
173
|
-
border-bottom: 1px solid var(--block-line);
|
|
174
|
-
}
|
|
175
|
-
.block-accordion-label {
|
|
176
|
-
display: flex;
|
|
177
|
-
min-height: 3.5rem;
|
|
178
|
-
align-items: center;
|
|
179
|
-
justify-content: space-between;
|
|
180
|
-
gap: 1rem;
|
|
181
|
-
padding: 0.875rem 1.25rem;
|
|
182
|
-
font-size: var(--type-title-medium-size);
|
|
183
|
-
line-height: var(--type-title-medium-line-height);
|
|
184
|
-
font-weight: var(--type-title-medium-weight);
|
|
185
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
186
|
-
transition: color var(--motion-effects);
|
|
187
|
-
}
|
|
188
|
-
summary.block-accordion-label {
|
|
189
|
-
cursor: pointer;
|
|
190
|
-
list-style: none;
|
|
191
|
-
/* The focus ring sits inside the row, so the panel's rounded edge never cuts it off. */
|
|
192
|
-
outline-offset: -3px;
|
|
193
|
-
}
|
|
194
|
-
summary.block-accordion-label::-webkit-details-marker {
|
|
195
|
-
display: none;
|
|
196
|
-
}
|
|
197
|
-
.block-accordion-icon {
|
|
198
|
-
flex-shrink: 0;
|
|
199
|
-
color: var(--block-muted);
|
|
200
|
-
transition: rotate var(--motion-spatial);
|
|
201
|
-
}
|
|
202
|
-
@media (hover: hover) {
|
|
203
|
-
summary.block-accordion-label:hover {
|
|
204
|
-
color: var(--block-accent);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
.block-accordion-row[open] > .block-accordion-label {
|
|
208
|
-
color: var(--block-accent);
|
|
209
|
-
}
|
|
210
|
-
.block-accordion-row[open] .block-accordion-icon {
|
|
211
|
-
rotate: 180deg;
|
|
212
|
-
color: var(--block-accent);
|
|
213
|
-
}
|
|
214
|
-
.block-accordion-body {
|
|
215
|
-
padding: 0 1.25rem 1.5rem;
|
|
216
|
-
}
|
|
217
|
-
/* An answer as it was written: paragraphs and lists apart, links in the accent. */
|
|
218
|
-
.block-accordion-answer {
|
|
219
|
-
max-width: 60ch;
|
|
220
|
-
font-size: var(--type-body-large-size);
|
|
221
|
-
line-height: var(--type-body-large-line-height);
|
|
222
|
-
font-weight: var(--type-body-large-weight);
|
|
223
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
224
|
-
color: var(--block-muted);
|
|
225
|
-
}
|
|
226
|
-
.block-accordion-answer * + * {
|
|
227
|
-
margin-top: 0.75em;
|
|
228
|
-
}
|
|
229
|
-
.block-accordion-answer ul {
|
|
230
|
-
list-style: disc;
|
|
231
|
-
padding-left: 1.25em;
|
|
232
|
-
}
|
|
233
|
-
.block-accordion-answer ol {
|
|
234
|
-
list-style: decimal;
|
|
235
|
-
padding-left: 1.25em;
|
|
236
|
-
}
|
|
237
|
-
.block-accordion-answer li + li {
|
|
238
|
-
margin-top: 0.25em;
|
|
239
|
-
}
|
|
240
|
-
.block-accordion-answer strong {
|
|
241
|
-
color: var(--block-text);
|
|
242
|
-
font-weight: 600;
|
|
243
|
-
}
|
|
244
|
-
.block-accordion-answer a {
|
|
245
|
-
color: var(--block-accent);
|
|
246
|
-
font-weight: 500;
|
|
247
|
-
text-decoration: underline;
|
|
248
|
-
text-decoration-thickness: 1px;
|
|
249
|
-
text-underline-offset: 0.25em;
|
|
250
|
-
}
|
|
251
|
-
/* "Hero" (hero/): its heading, the subtitle (the first paragraph, larger) and the introduction, the buttons, a text
|
|
252
|
-
under them and a quote, beside the picture on a computer, under it on a phone. */
|
|
253
|
-
.block-hero {
|
|
254
|
-
display: grid;
|
|
255
|
-
gap: 2rem;
|
|
256
|
-
align-items: center;
|
|
257
|
-
}
|
|
258
|
-
.block-hero-title {
|
|
259
|
-
margin: 0 0 1.25rem;
|
|
260
|
-
font-size: var(--type-display-small-size);
|
|
261
|
-
line-height: var(--type-display-small-line-height);
|
|
262
|
-
font-weight: var(--type-display-small-weight);
|
|
263
|
-
letter-spacing: var(--type-display-small-tracking);
|
|
264
|
-
}
|
|
265
|
-
.block-hero-text > :first-child {
|
|
266
|
-
font-size: var(--type-title-large-size);
|
|
267
|
-
line-height: var(--type-title-large-line-height);
|
|
268
|
-
font-weight: var(--type-title-large-weight);
|
|
269
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
270
|
-
}
|
|
271
|
-
.block-hero-text > * + * {
|
|
272
|
-
margin-top: 1rem;
|
|
273
|
-
color: var(--block-muted);
|
|
274
|
-
}
|
|
275
|
-
.block-hero-body > .block-buttons {
|
|
276
|
-
margin-top: 2rem;
|
|
277
|
-
}
|
|
278
|
-
.block-hero-note {
|
|
279
|
-
margin-top: 1rem;
|
|
280
|
-
max-width: 44ch;
|
|
281
|
-
font-size: var(--type-body-medium-size);
|
|
282
|
-
line-height: var(--type-body-medium-line-height);
|
|
283
|
-
font-weight: var(--type-body-medium-weight);
|
|
284
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
285
|
-
color: var(--block-muted);
|
|
286
|
-
}
|
|
287
|
-
.block-hero-note > * + * {
|
|
288
|
-
margin-top: 0.5rem;
|
|
289
|
-
}
|
|
290
|
-
/* A quote in the text under the buttons ("> …"): larger, in the text's colour, along a line in the accent; its last
|
|
291
|
-
paragraph, when it has more than one, is who said it (with a link to the whole of it). */
|
|
292
|
-
.block-hero-note > blockquote {
|
|
293
|
-
margin: 2rem 0 0;
|
|
294
|
-
border-left: 2px solid var(--block-accent);
|
|
295
|
-
padding-left: 1rem;
|
|
296
|
-
}
|
|
297
|
-
.block-hero-note > blockquote > p {
|
|
298
|
-
margin: 0;
|
|
299
|
-
font-size: var(--type-body-large-size);
|
|
300
|
-
line-height: var(--type-body-large-line-height);
|
|
301
|
-
font-weight: var(--type-body-large-weight);
|
|
302
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
303
|
-
color: var(--block-text);
|
|
304
|
-
}
|
|
305
|
-
.block-hero-note > blockquote > p:last-child:not(:first-child) {
|
|
306
|
-
margin-top: 0.5rem;
|
|
307
|
-
font-size: var(--type-body-medium-size);
|
|
308
|
-
line-height: var(--type-body-medium-line-height);
|
|
309
|
-
font-weight: var(--type-body-medium-weight);
|
|
310
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
311
|
-
color: var(--block-muted);
|
|
312
|
-
}
|
|
313
|
-
.block-hero-picture {
|
|
314
|
-
display: block;
|
|
315
|
-
width: 100%;
|
|
316
|
-
height: auto;
|
|
317
|
-
aspect-ratio: 4 / 5;
|
|
318
|
-
object-fit: cover;
|
|
319
|
-
object-position: 50% 22%;
|
|
320
|
-
border-radius: var(--block-radius);
|
|
321
|
-
}
|
|
322
|
-
/* The picture behind the text ("Hero", `placement` 'behind'): it fills a panel, darkened from below (--block-hero-shade,
|
|
323
|
-
the text's colour unless the theme sets it) so the text on it (--block-hero-on-shade, the surface's) can be read. */
|
|
324
|
-
.block-hero-behind {
|
|
325
|
-
position: relative;
|
|
326
|
-
isolation: isolate;
|
|
327
|
-
display: flex;
|
|
328
|
-
min-height: 26rem;
|
|
329
|
-
flex-direction: column;
|
|
330
|
-
align-items: stretch;
|
|
331
|
-
justify-content: flex-end;
|
|
332
|
-
overflow: hidden;
|
|
333
|
-
border-radius: var(--block-radius);
|
|
334
|
-
padding: 2rem 1.5rem;
|
|
335
|
-
color: var(--block-hero-on-shade, var(--block-surface));
|
|
336
|
-
}
|
|
337
|
-
.block-hero-behind::before {
|
|
338
|
-
content: '';
|
|
339
|
-
position: absolute;
|
|
340
|
-
inset: 0;
|
|
341
|
-
z-index: -1;
|
|
342
|
-
background: linear-gradient(
|
|
343
|
-
to top,
|
|
344
|
-
color-mix(in srgb, var(--block-hero-shade, var(--block-text)) 85%, transparent),
|
|
345
|
-
color-mix(in srgb, var(--block-hero-shade, var(--block-text)) 35%, transparent) 70%,
|
|
346
|
-
color-mix(in srgb, var(--block-hero-shade, var(--block-text)) 20%, transparent)
|
|
347
|
-
);
|
|
348
|
-
}
|
|
349
|
-
.block-hero-behind > .block-hero-picture {
|
|
350
|
-
position: absolute;
|
|
351
|
-
inset: 0;
|
|
352
|
-
z-index: -2;
|
|
353
|
-
height: 100%;
|
|
354
|
-
aspect-ratio: auto;
|
|
355
|
-
border-radius: 0;
|
|
356
|
-
}
|
|
357
|
-
.block-hero-behind .block-hero-text > * + *,
|
|
358
|
-
.block-hero-behind .block-hero-note,
|
|
359
|
-
.block-hero-behind .block-hero-note > blockquote > p:last-child:not(:first-child) {
|
|
360
|
-
color: color-mix(in srgb, var(--block-hero-on-shade, var(--block-surface)) 85%, transparent);
|
|
361
|
-
}
|
|
362
|
-
.block-hero-behind .block-hero-note > blockquote {
|
|
363
|
-
border-left-color: currentColor;
|
|
364
|
-
}
|
|
365
|
-
.block-hero-behind .block-hero-note > blockquote > p {
|
|
366
|
-
color: var(--block-hero-on-shade, var(--block-surface));
|
|
367
|
-
}
|
|
368
|
-
.block-hero-behind :is(.block-link, .block-hero-note a) {
|
|
369
|
-
color: inherit;
|
|
370
|
-
}
|
|
371
|
-
/* Across the whole width of the window ("Banner", `width` 'full'): without corners, and without a picture behind it on
|
|
372
|
-
a band in the tint, its content in a readable width. On the site (in the text, .block-in-text) it reaches out of
|
|
373
|
-
the text to the window's edges, from where the text starts at the left of the page's container (--block-page-width,
|
|
374
|
-
--block-gutter), and its content starts there again and ends at the container's right edge; the page is clipped at
|
|
375
|
-
the window's edges while it has one (100vw is a scrollbar wider). In the editor it is as wide as where it is drawn. */
|
|
376
|
-
.block-hero.block-hero-full {
|
|
377
|
-
border-radius: 0;
|
|
378
|
-
}
|
|
379
|
-
:where(.block-hero-full:not(.block-hero-behind)) {
|
|
380
|
-
background: var(--block-tint);
|
|
381
|
-
padding: 2.5rem 1.5rem;
|
|
382
|
-
}
|
|
383
|
-
:where(.block-hero-full) > .block-hero-body {
|
|
384
|
-
max-width: 44rem;
|
|
385
|
-
}
|
|
386
|
-
.block-hero-full.block-in-text {
|
|
387
|
-
--block-hero-inset: calc(max(0px, (100vw - var(--block-page-width)) / 2) + var(--block-gutter));
|
|
388
|
-
width: 100vw;
|
|
389
|
-
max-width: none;
|
|
390
|
-
margin-left: calc(-1 * var(--block-hero-inset));
|
|
391
|
-
padding-inline: var(--block-hero-inset);
|
|
392
|
-
}
|
|
393
|
-
body:has(.block-hero-full.block-in-text) {
|
|
394
|
-
overflow-x: clip;
|
|
395
|
-
}
|
|
396
|
-
@media (min-width: 48rem) {
|
|
397
|
-
.block-hero {
|
|
398
|
-
grid-template-columns: 7fr 5fr;
|
|
399
|
-
gap: 3rem;
|
|
400
|
-
}
|
|
401
|
-
.block-hero-behind {
|
|
402
|
-
min-height: 32rem;
|
|
403
|
-
padding: 3.5rem;
|
|
404
|
-
}
|
|
405
|
-
:where(.block-hero-full:not(.block-hero-behind)) {
|
|
406
|
-
padding: 4rem 3.5rem;
|
|
407
|
-
}
|
|
408
|
-
.block-hero-title {
|
|
409
|
-
font-size: var(--type-display-medium-size);
|
|
410
|
-
line-height: var(--type-display-medium-line-height);
|
|
411
|
-
font-weight: var(--type-display-medium-weight);
|
|
412
|
-
letter-spacing: var(--type-display-medium-tracking);
|
|
413
|
-
}
|
|
414
|
-
.block-hero-body > .block-buttons {
|
|
415
|
-
flex-direction: row;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/* "Knapper": buttons in a row, on a phone under each other in the full width (buttons/). The buttons are the
|
|
420
|
-
theme's (.button in ui.css), each of the kind it was given. */
|
|
421
|
-
.block-buttons {
|
|
422
|
-
display: flex;
|
|
423
|
-
flex-direction: column;
|
|
424
|
-
gap: 0.75rem;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
/* A form in a block or a pop-up (an app's: Mailchimp's signup): its fields (the theme's text fields, .text-field in
|
|
428
|
-
ui.css) and its button side by side, wrapping on a phone, and the answer under it. */
|
|
429
|
-
.block-form {
|
|
430
|
-
display: flex;
|
|
431
|
-
flex-wrap: wrap;
|
|
432
|
-
gap: 0.75rem;
|
|
433
|
-
margin-top: 1.5rem;
|
|
434
|
-
}
|
|
435
|
-
.block-form > .button {
|
|
436
|
-
flex: 1 0 auto;
|
|
437
|
-
}
|
|
438
|
-
.block-form > .text-field {
|
|
439
|
-
flex: 1 1 12rem;
|
|
440
|
-
}
|
|
441
|
-
/* The answer to a form, in the accent when it went wrong (data-failed). */
|
|
442
|
-
.block-message {
|
|
443
|
-
margin-top: 1rem;
|
|
444
|
-
}
|
|
445
|
-
.block-message[data-failed] {
|
|
446
|
-
color: var(--block-accent);
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
/* A link in a block's text (and in the text under a banner's buttons): in the accent, underlined, thicker when
|
|
450
|
-
pointed at. */
|
|
451
|
-
.block-link,
|
|
452
|
-
.block-hero-note a {
|
|
453
|
-
color: var(--block-accent);
|
|
454
|
-
font-weight: 500;
|
|
455
|
-
text-decoration: underline;
|
|
456
|
-
text-decoration-thickness: 1px;
|
|
457
|
-
text-underline-offset: 0.25em;
|
|
458
|
-
}
|
|
459
|
-
.block-link:hover,
|
|
460
|
-
.block-hero-note a:hover {
|
|
461
|
-
text-decoration-thickness: 2px;
|
|
462
|
-
}
|
|
463
|
-
/* A link on its own line with an arrow after it ("Alle indlæg →"). */
|
|
464
|
-
.block-arrow-link {
|
|
465
|
-
display: inline-flex;
|
|
466
|
-
align-items: center;
|
|
467
|
-
gap: 0.5rem;
|
|
468
|
-
font-weight: 500;
|
|
469
|
-
color: var(--block-accent);
|
|
470
|
-
text-decoration: none;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
/* "Blogindlæg": its posts as the blog shows them (the theme's PostList.tsx and BlogPosts.tsx), "Alle indlæg" under
|
|
474
|
-
them. */
|
|
475
|
-
.block-posts-in-text.block-in-text {
|
|
476
|
-
margin-block: 2.5rem;
|
|
477
|
-
}
|
|
478
|
-
.block-posts-all {
|
|
479
|
-
margin-top: 1.5rem;
|
|
480
|
-
}
|
|
481
|
-
/* In the editor's drawing: random posts, of how many; under all of them, how many more there are. */
|
|
482
|
-
.block-posts-note {
|
|
483
|
-
margin: 0 0 1rem;
|
|
484
|
-
font-size: var(--type-body-medium-size);
|
|
485
|
-
line-height: var(--type-body-medium-line-height);
|
|
486
|
-
font-weight: var(--type-body-medium-weight);
|
|
487
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
488
|
-
color: var(--block-muted);
|
|
489
|
-
}
|
|
490
|
-
.block-posts-more {
|
|
491
|
-
margin: 1rem 0 0;
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
/* Only for screen readers. */
|
|
495
|
-
.block-sr-only {
|
|
496
|
-
position: absolute;
|
|
497
|
-
width: 1px;
|
|
498
|
-
height: 1px;
|
|
499
|
-
padding: 0;
|
|
500
|
-
margin: -1px;
|
|
501
|
-
overflow: hidden;
|
|
502
|
-
clip-path: inset(50%);
|
|
503
|
-
white-space: nowrap;
|
|
504
|
-
border-width: 0;
|
|
505
|
-
}
|
|
506
|
-
/* In a drawing in the editor, when there is nothing to show. */
|
|
507
|
-
.block-empty {
|
|
508
|
-
border-radius: var(--block-radius);
|
|
509
|
-
background: var(--block-tint);
|
|
510
|
-
padding: 1.5rem;
|
|
511
|
-
color: var(--block-muted);
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
/* "Udtalelser": testimonials to leaf through (testimonials/Slider.tsx, a carousel: ui.css). */
|
|
515
|
-
.carousel.block-in-text,
|
|
516
|
-
.block-testimonials.block-in-text,
|
|
517
|
-
.block-testimonial.block-in-text {
|
|
518
|
-
margin-block: 2.5rem;
|
|
519
|
-
}
|
|
520
|
-
/* "Udtalelser" one after another (testimonials/List.tsx): two columns where there is room. */
|
|
521
|
-
.block-testimonial-list {
|
|
522
|
-
columns: 2 18rem;
|
|
523
|
-
column-gap: 1rem;
|
|
524
|
-
}
|
|
525
|
-
.block-testimonial-list > * {
|
|
526
|
-
break-inside: avoid;
|
|
527
|
-
margin-bottom: 1rem;
|
|
528
|
-
}
|
|
529
|
-
/* Filter chips (the theme's Chip, ui.css) that filter what is under them ("Udtalelser" under hinanden). */
|
|
530
|
-
.block-filters {
|
|
531
|
-
display: flex;
|
|
532
|
-
flex-wrap: wrap;
|
|
533
|
-
gap: 0.5rem;
|
|
534
|
-
margin-bottom: 1.5rem;
|
|
535
|
-
}
|
|
536
|
-
.block-filters[hidden] {
|
|
537
|
-
display: none;
|
|
538
|
-
}
|
|
539
|
-
/* One testimonial (testimonials/Testimonial.tsx), an outlined card (.card in ui.css): a big quotation mark, its tags,
|
|
540
|
-
the text (cut after seven lines with "Læs mere", or two with a link to the whole text) and the name. */
|
|
541
|
-
.block-testimonial {
|
|
542
|
-
display: flex;
|
|
543
|
-
width: 100%;
|
|
544
|
-
flex-direction: column;
|
|
545
|
-
margin: 0;
|
|
546
|
-
}
|
|
547
|
-
.block-testimonial-head {
|
|
548
|
-
display: flex;
|
|
549
|
-
align-items: flex-start;
|
|
550
|
-
justify-content: space-between;
|
|
551
|
-
gap: 1rem;
|
|
552
|
-
}
|
|
553
|
-
.block-testimonial-quote-mark {
|
|
554
|
-
display: block;
|
|
555
|
-
height: 2.5rem;
|
|
556
|
-
margin-bottom: -1rem;
|
|
557
|
-
font-size: var(--type-display-large-size);
|
|
558
|
-
line-height: var(--type-display-large-line-height);
|
|
559
|
-
font-weight: var(--type-display-large-weight);
|
|
560
|
-
letter-spacing: var(--type-display-large-tracking);
|
|
561
|
-
color: var(--block-accent);
|
|
562
|
-
}
|
|
563
|
-
.block-testimonial-tags {
|
|
564
|
-
display: flex;
|
|
565
|
-
flex-wrap: wrap;
|
|
566
|
-
justify-content: flex-end;
|
|
567
|
-
gap: 0.5rem;
|
|
568
|
-
}
|
|
569
|
-
.block-testimonial-tags .chip {
|
|
570
|
-
font-size: var(--type-label-large-size);
|
|
571
|
-
line-height: var(--type-label-large-line-height);
|
|
572
|
-
font-weight: var(--type-label-large-weight);
|
|
573
|
-
letter-spacing: var(--type-label-large-tracking);
|
|
574
|
-
}
|
|
575
|
-
.block-testimonial-text {
|
|
576
|
-
margin: 0.75rem 0 0;
|
|
577
|
-
font-size: var(--type-body-large-size);
|
|
578
|
-
line-height: var(--type-body-large-line-height);
|
|
579
|
-
font-weight: var(--type-body-large-weight);
|
|
580
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
581
|
-
}
|
|
582
|
-
.block-testimonial-text > * {
|
|
583
|
-
margin: 0;
|
|
584
|
-
}
|
|
585
|
-
.block-testimonial-text > :not(:last-child) {
|
|
586
|
-
margin-bottom: 0.75rem;
|
|
587
|
-
}
|
|
588
|
-
.block-testimonial-context {
|
|
589
|
-
color: var(--block-muted);
|
|
590
|
-
}
|
|
591
|
-
.block-testimonial-short {
|
|
592
|
-
display: -webkit-box;
|
|
593
|
-
overflow: hidden;
|
|
594
|
-
-webkit-box-orient: vertical;
|
|
595
|
-
-webkit-line-clamp: 2;
|
|
596
|
-
}
|
|
597
|
-
.block-testimonial-more {
|
|
598
|
-
position: relative;
|
|
599
|
-
display: inline-flex;
|
|
600
|
-
align-self: flex-start;
|
|
601
|
-
align-items: center;
|
|
602
|
-
gap: 0.375rem;
|
|
603
|
-
margin-top: 0.75rem;
|
|
604
|
-
border: 0;
|
|
605
|
-
padding: 0;
|
|
606
|
-
background: none;
|
|
607
|
-
font: inherit;
|
|
608
|
-
font-size: var(--type-label-large-size);
|
|
609
|
-
line-height: var(--type-label-large-line-height);
|
|
610
|
-
font-weight: var(--type-label-large-weight);
|
|
611
|
-
letter-spacing: var(--type-label-large-tracking);
|
|
612
|
-
color: var(--block-accent);
|
|
613
|
-
text-decoration: none;
|
|
614
|
-
}
|
|
615
|
-
.block-testimonial-more[hidden] {
|
|
616
|
-
display: none;
|
|
617
|
-
}
|
|
618
|
-
.block-testimonial-more svg {
|
|
619
|
-
transition: transform var(--motion-spatial);
|
|
620
|
-
}
|
|
621
|
-
.block-testimonial-more[aria-expanded='true'] svg {
|
|
622
|
-
transform: rotate(180deg);
|
|
623
|
-
}
|
|
624
|
-
.block-testimonial-name {
|
|
625
|
-
display: flex;
|
|
626
|
-
align-items: center;
|
|
627
|
-
gap: 0.75rem;
|
|
628
|
-
margin-top: auto;
|
|
629
|
-
padding-top: 1.5rem;
|
|
630
|
-
font-weight: 500;
|
|
631
|
-
}
|
|
632
|
-
.block-testimonial-mark {
|
|
633
|
-
display: none;
|
|
634
|
-
}
|
|
635
|
-
/* A testimonial's picture before the name: small and round. */
|
|
636
|
-
.block-testimonial-picture {
|
|
637
|
-
width: 2.5rem;
|
|
638
|
-
height: 2.5rem;
|
|
639
|
-
flex-shrink: 0;
|
|
640
|
-
border-radius: 9999px;
|
|
641
|
-
object-fit: cover;
|
|
642
|
-
}
|
|
643
|
-
.js [data-clamp] {
|
|
644
|
-
max-height: calc(1.625em * 7);
|
|
645
|
-
overflow: hidden;
|
|
646
|
-
}
|
|
647
|
-
.js [data-clamp][data-overflow] {
|
|
648
|
-
mask-image: linear-gradient(to bottom, #000 55%, transparent);
|
|
649
|
-
}
|
|
650
|
-
.js [data-clamp][data-open] {
|
|
651
|
-
max-height: none;
|
|
652
|
-
mask-image: none;
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
/* "Accordion": a row's text, the link to its page and links to more specific pages under it
|
|
656
|
-
(accordion/PageRow.tsx). */
|
|
657
|
-
.block-row-text {
|
|
658
|
-
max-width: 60ch;
|
|
659
|
-
font-size: var(--type-body-large-size);
|
|
660
|
-
line-height: var(--type-body-large-line-height);
|
|
661
|
-
font-weight: var(--type-body-large-weight);
|
|
662
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
663
|
-
color: var(--block-muted);
|
|
664
|
-
}
|
|
665
|
-
.block-row-links {
|
|
666
|
-
display: flex;
|
|
667
|
-
flex-wrap: wrap;
|
|
668
|
-
align-items: center;
|
|
669
|
-
gap: 0.75rem 1.5rem;
|
|
670
|
-
margin-top: 1rem;
|
|
671
|
-
}
|
|
672
|
-
.block-row-link {
|
|
673
|
-
display: inline-flex;
|
|
674
|
-
min-height: 2.75rem;
|
|
675
|
-
align-items: center;
|
|
676
|
-
gap: 0.5rem;
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
/* "Kort": outlined cards (.card in ui.css) that link to other pages, with an icon, a picture or nothing at the top,
|
|
680
|
-
two side by side from small screens (cards/LinkCards.tsx). */
|
|
681
|
-
.block-cards {
|
|
682
|
-
display: grid;
|
|
683
|
-
gap: 1rem;
|
|
684
|
-
padding: 0;
|
|
685
|
-
list-style: none;
|
|
686
|
-
}
|
|
687
|
-
.block-card {
|
|
688
|
-
display: flex;
|
|
689
|
-
height: 100%;
|
|
690
|
-
flex-direction: column;
|
|
691
|
-
/* Its edge a border in the outlined card's line, so a picture at the top stays inside it. */
|
|
692
|
-
border: 1px solid var(--card-outlined-line, var(--block-line));
|
|
693
|
-
/* The card's shadow as it is now (ui.css: at rest, pointed at, dragged), without its line. */
|
|
694
|
-
box-shadow: var(--card-shadow, 0 0 #0000);
|
|
695
|
-
color: inherit;
|
|
696
|
-
/* The same with a page (a link, as the site has links) and without one (not a link). */
|
|
697
|
-
font-weight: 500;
|
|
698
|
-
text-decoration: none;
|
|
699
|
-
transition:
|
|
700
|
-
border-color var(--motion-effects),
|
|
701
|
-
box-shadow var(--motion-effects);
|
|
702
|
-
}
|
|
703
|
-
.block-card-icon {
|
|
704
|
-
color: var(--block-accent);
|
|
705
|
-
}
|
|
706
|
-
/* The picture fills the top of the card, out to its edges. */
|
|
707
|
-
.block-card-picture {
|
|
708
|
-
display: block;
|
|
709
|
-
margin: -1.5rem -1.5rem 0.25rem;
|
|
710
|
-
overflow: hidden;
|
|
711
|
-
border-radius: calc(var(--card-radius, var(--block-radius)) - 1px) calc(var(--card-radius, var(--block-radius)) - 1px) 0 0;
|
|
712
|
-
background: var(--block-tint);
|
|
713
|
-
aspect-ratio: 3 / 2;
|
|
714
|
-
}
|
|
715
|
-
.block-card-picture img {
|
|
716
|
-
display: block;
|
|
717
|
-
width: 100%;
|
|
718
|
-
height: 100%;
|
|
719
|
-
object-fit: cover;
|
|
720
|
-
transition: scale var(--motion-spatial-slow);
|
|
721
|
-
}
|
|
722
|
-
.block-card-title {
|
|
723
|
-
margin-top: 1rem;
|
|
724
|
-
font-size: var(--type-title-large-size);
|
|
725
|
-
line-height: var(--type-title-large-line-height);
|
|
726
|
-
font-weight: var(--type-title-large-weight);
|
|
727
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
728
|
-
}
|
|
729
|
-
/* Only text: the heading at the top. */
|
|
730
|
-
.block-card-title:first-child {
|
|
731
|
-
margin-top: 0;
|
|
732
|
-
}
|
|
733
|
-
.block-card-text {
|
|
734
|
-
margin-top: 0.375rem;
|
|
735
|
-
color: var(--block-muted);
|
|
736
|
-
}
|
|
737
|
-
.block-card-more {
|
|
738
|
-
display: inline-flex;
|
|
739
|
-
margin-top: auto;
|
|
740
|
-
align-items: center;
|
|
741
|
-
gap: 0.5rem;
|
|
742
|
-
padding-top: 1.25rem;
|
|
743
|
-
font-weight: 500;
|
|
744
|
-
color: var(--block-accent);
|
|
745
|
-
}
|
|
746
|
-
.block-card-arrow {
|
|
747
|
-
transition: translate var(--motion-spatial);
|
|
748
|
-
}
|
|
749
|
-
/* The cards on the accent ("Kort", `background`): the whole card in it, its text and icon in the colour that is read
|
|
750
|
-
on it. */
|
|
751
|
-
.block-cards-accent .block-card {
|
|
752
|
-
--card-outlined-surface: var(--block-accent);
|
|
753
|
-
--card-outlined-line: transparent;
|
|
754
|
-
color: var(--block-on-accent);
|
|
755
|
-
}
|
|
756
|
-
.block-cards-accent :is(.block-card-icon, .block-card-text, .block-card-more) {
|
|
757
|
-
color: var(--block-on-accent);
|
|
758
|
-
}
|
|
759
|
-
/* A panel (Panel.tsx): an outlined card (.card in ui.css) for a block that is one box (e.g. an app's about
|
|
760
|
-
or price block), with an icon, a heading and a text at the top, and parts under a line. */
|
|
761
|
-
.block-panel {
|
|
762
|
-
color: var(--block-text);
|
|
763
|
-
}
|
|
764
|
-
.block-panel.block-in-text + .block-panel.block-in-text {
|
|
765
|
-
margin-top: 1rem;
|
|
766
|
-
}
|
|
767
|
-
.block-panel-icon {
|
|
768
|
-
display: block;
|
|
769
|
-
margin-bottom: 1rem;
|
|
770
|
-
color: var(--block-accent);
|
|
771
|
-
}
|
|
772
|
-
.block-panel-title {
|
|
773
|
-
margin: 0;
|
|
774
|
-
font-size: var(--type-title-large-size);
|
|
775
|
-
line-height: var(--type-title-large-line-height);
|
|
776
|
-
font-weight: var(--type-title-large-weight);
|
|
777
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
778
|
-
}
|
|
779
|
-
.block-panel-text {
|
|
780
|
-
margin-top: 0.4rem;
|
|
781
|
-
color: var(--block-muted);
|
|
782
|
-
}
|
|
783
|
-
.block-panel > .block-arrow-link {
|
|
784
|
-
margin-top: 1rem;
|
|
785
|
-
}
|
|
786
|
-
/* Buttons in a panel, and a link after them (an app's: Calendly's, when the calendar does not show). */
|
|
787
|
-
.block-panel > .block-buttons {
|
|
788
|
-
margin-top: 1.25rem;
|
|
789
|
-
}
|
|
790
|
-
.block-panel > .block-link {
|
|
791
|
-
display: inline-flex;
|
|
792
|
-
align-items: center;
|
|
793
|
-
gap: 0.375rem;
|
|
794
|
-
margin-top: 1.25rem;
|
|
795
|
-
}
|
|
796
|
-
/* Boxes side by side where there is room ("Links", links/LinkGroups.tsx; an app's payment block). */
|
|
797
|
-
.block-panels {
|
|
798
|
-
display: grid;
|
|
799
|
-
/* Two side by side where there is room for 17rem each, never more. */
|
|
800
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, max(17rem, calc(50% - 0.5rem))), 1fr));
|
|
801
|
-
gap: 1rem;
|
|
802
|
-
}
|
|
803
|
-
.block-panels.block-in-text {
|
|
804
|
-
margin-block: 2.5rem;
|
|
805
|
-
}
|
|
806
|
-
/* Boxes with values to copy: side by side only where each has room for its values with their buttons. */
|
|
807
|
-
.block-panels:has(.block-copy-rows) {
|
|
808
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, max(23rem, calc(50% - 0.5rem))), 1fr));
|
|
809
|
-
}
|
|
810
|
-
/* "Links": a box's heading linking to its page, and its pages under it in a list (.list in ui.css). */
|
|
811
|
-
.block-panel-title a {
|
|
812
|
-
color: inherit;
|
|
813
|
-
text-decoration: none;
|
|
814
|
-
}
|
|
815
|
-
.block-panel-title a:hover {
|
|
816
|
-
color: var(--block-accent);
|
|
817
|
-
}
|
|
818
|
-
.block-panel > .list {
|
|
819
|
-
margin-top: 1rem;
|
|
820
|
-
}
|
|
821
|
-
/* "Punkter med ikon": a list without dividers (.list in ui.css, points/PointList.tsx), its items side by side where
|
|
822
|
-
there is room for 16rem each. Nothing in it is tapped, so its icons start where the text around it does. */
|
|
823
|
-
.block-points {
|
|
824
|
-
--list-item-padding-inline: 0;
|
|
825
|
-
display: grid;
|
|
826
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
|
|
827
|
-
column-gap: 1.5rem;
|
|
828
|
-
}
|
|
829
|
-
.block-points.block-in-text {
|
|
830
|
-
margin-block: 1.5rem;
|
|
831
|
-
}
|
|
832
|
-
/* A check's text is its headline alone and can run over more lines, so it starts at the top and the check stands
|
|
833
|
-
by its first line. */
|
|
834
|
-
.block-checklist .list-item-container {
|
|
835
|
-
align-items: flex-start;
|
|
836
|
-
}
|
|
837
|
-
.block-checklist .list-item-leading {
|
|
838
|
-
max-height: var(--list-item-headline-line-height, 1lh);
|
|
839
|
-
}
|
|
840
|
-
/* A picture with a heading, a text and buttons, beside it where there is room for 22rem each, else under it
|
|
841
|
-
(e.g. an app's address block). */
|
|
842
|
-
.block-media {
|
|
843
|
-
display: grid;
|
|
844
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
|
|
845
|
-
align-items: center;
|
|
846
|
-
gap: 1.5rem 3rem;
|
|
847
|
-
}
|
|
848
|
-
.block-media-picture {
|
|
849
|
-
display: block;
|
|
850
|
-
width: 100%;
|
|
851
|
-
aspect-ratio: 4 / 3;
|
|
852
|
-
border-radius: var(--block-radius);
|
|
853
|
-
object-fit: cover;
|
|
854
|
-
}
|
|
855
|
-
.block-media-title {
|
|
856
|
-
margin: 0;
|
|
857
|
-
font-size: var(--type-headline-small-size);
|
|
858
|
-
line-height: var(--type-headline-small-line-height);
|
|
859
|
-
font-weight: var(--type-headline-small-weight);
|
|
860
|
-
letter-spacing: var(--type-headline-small-tracking);
|
|
861
|
-
}
|
|
862
|
-
.block-media-text {
|
|
863
|
-
margin: 1rem 0 0;
|
|
864
|
-
font-style: normal;
|
|
865
|
-
font-size: var(--type-body-large-size);
|
|
866
|
-
line-height: var(--type-body-large-line-height);
|
|
867
|
-
font-weight: var(--type-body-large-weight);
|
|
868
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
869
|
-
}
|
|
870
|
-
.block-media-body > .block-buttons {
|
|
871
|
-
margin-top: 1.5rem;
|
|
872
|
-
}
|
|
873
|
-
/* Values that can be copied, each with its name before it and a button after it (e.g. an app's payment block). */
|
|
874
|
-
.block-copy-rows {
|
|
875
|
-
display: grid;
|
|
876
|
-
grid-template-columns: auto 1fr auto;
|
|
877
|
-
align-items: center;
|
|
878
|
-
gap: 0.75rem 1rem;
|
|
879
|
-
margin: 0;
|
|
880
|
-
}
|
|
881
|
-
.block-copy-rows dt {
|
|
882
|
-
color: var(--block-muted);
|
|
883
|
-
}
|
|
884
|
-
.block-copy-rows dd {
|
|
885
|
-
margin: 0;
|
|
886
|
-
}
|
|
887
|
-
/* In a narrow box the button goes under its value. */
|
|
888
|
-
.block-panel:has(> .block-copy-rows) {
|
|
889
|
-
container-type: inline-size;
|
|
890
|
-
}
|
|
891
|
-
@container (width < 18.5rem) {
|
|
892
|
-
.block-copy-rows {
|
|
893
|
-
grid-template-columns: auto 1fr;
|
|
894
|
-
}
|
|
895
|
-
.block-copy-rows dt {
|
|
896
|
-
grid-column: 1;
|
|
897
|
-
}
|
|
898
|
-
.block-copy-rows dd {
|
|
899
|
-
grid-column: 2;
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
.block-copy-value {
|
|
903
|
-
white-space: nowrap;
|
|
904
|
-
font-size: var(--type-headline-small-size);
|
|
905
|
-
line-height: var(--type-headline-small-line-height);
|
|
906
|
-
font-weight: var(--type-headline-small-weight);
|
|
907
|
-
letter-spacing: var(--type-headline-small-tracking);
|
|
908
|
-
font-variant-numeric: tabular-nums;
|
|
909
|
-
}
|
|
910
|
-
.block-panel > .block-buttons-row {
|
|
911
|
-
margin-top: 1.25rem;
|
|
912
|
-
}
|
|
913
|
-
.block-buttons-row {
|
|
914
|
-
display: flex;
|
|
915
|
-
flex-wrap: wrap;
|
|
916
|
-
gap: 0.5rem;
|
|
917
|
-
}
|
|
918
|
-
.block-panel-title > svg {
|
|
919
|
-
display: inline-block;
|
|
920
|
-
margin-right: 0.5rem;
|
|
921
|
-
vertical-align: -0.2em;
|
|
922
|
-
color: var(--block-accent);
|
|
923
|
-
}
|
|
924
|
-
|
|
925
|
-
/* Steps that go from free to the full price, each more coloured than the one before (`--step`, a share of the
|
|
926
|
-
accent over the tint), the last in the accent; across on a wider screen (e.g. an app's cancellation block). */
|
|
927
|
-
.block-timeline {
|
|
928
|
-
display: grid;
|
|
929
|
-
gap: 0.75rem;
|
|
930
|
-
margin: 0;
|
|
931
|
-
padding: 0;
|
|
932
|
-
list-style: none;
|
|
933
|
-
}
|
|
934
|
-
.block-timeline.block-in-text {
|
|
935
|
-
margin-block: 2rem;
|
|
936
|
-
}
|
|
937
|
-
.block-timeline > li {
|
|
938
|
-
display: flex;
|
|
939
|
-
align-items: center;
|
|
940
|
-
justify-content: space-between;
|
|
941
|
-
gap: 1rem;
|
|
942
|
-
border-radius: var(--block-radius-small);
|
|
943
|
-
background: color-mix(in srgb, var(--block-accent) var(--step, 0%), var(--block-tint));
|
|
944
|
-
padding: 1.25rem;
|
|
945
|
-
}
|
|
946
|
-
.block-timeline > li:last-child {
|
|
947
|
-
background: var(--block-accent);
|
|
948
|
-
color: var(--block-on-accent);
|
|
949
|
-
}
|
|
950
|
-
.block-timeline-when {
|
|
951
|
-
font-size: var(--type-body-medium-size);
|
|
952
|
-
line-height: var(--type-body-medium-line-height);
|
|
953
|
-
font-weight: var(--type-body-medium-weight);
|
|
954
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
955
|
-
color: var(--block-muted);
|
|
956
|
-
}
|
|
957
|
-
.block-timeline > li:last-child .block-timeline-when {
|
|
958
|
-
color: inherit;
|
|
959
|
-
opacity: 0.9;
|
|
960
|
-
}
|
|
961
|
-
.block-timeline-value {
|
|
962
|
-
font-size: var(--type-title-large-size);
|
|
963
|
-
line-height: var(--type-title-large-line-height);
|
|
964
|
-
font-weight: var(--type-title-large-weight);
|
|
965
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
966
|
-
}
|
|
967
|
-
@media (width >= 40rem) {
|
|
968
|
-
.block-timeline {
|
|
969
|
-
grid-auto-columns: 1fr;
|
|
970
|
-
grid-auto-flow: column;
|
|
971
|
-
gap: 0;
|
|
972
|
-
}
|
|
973
|
-
.block-timeline > li {
|
|
974
|
-
flex-direction: column;
|
|
975
|
-
align-items: flex-start;
|
|
976
|
-
border-radius: 0;
|
|
977
|
-
padding: 1.5rem;
|
|
978
|
-
}
|
|
979
|
-
.block-timeline > li:first-child {
|
|
980
|
-
border-start-start-radius: var(--block-radius);
|
|
981
|
-
border-end-start-radius: var(--block-radius);
|
|
982
|
-
}
|
|
983
|
-
.block-timeline > li:last-child {
|
|
984
|
-
border-start-end-radius: var(--block-radius);
|
|
985
|
-
border-end-end-radius: var(--block-radius);
|
|
986
|
-
}
|
|
987
|
-
.block-timeline-value {
|
|
988
|
-
margin-top: 1.5rem;
|
|
989
|
-
font-size: var(--type-headline-small-size);
|
|
990
|
-
line-height: var(--type-headline-small-line-height);
|
|
991
|
-
font-weight: var(--type-headline-small-weight);
|
|
992
|
-
letter-spacing: var(--type-headline-small-tracking);
|
|
993
|
-
}
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
/* A part of a panel under a line (over the part's own margin and padding: a list, the facts). */
|
|
997
|
-
.block-panel > .block-panel-part {
|
|
998
|
-
margin-top: 1.25rem;
|
|
999
|
-
border-top: 1px solid var(--block-line);
|
|
1000
|
-
padding-top: 1.25rem;
|
|
1001
|
-
}
|
|
1002
|
-
/* Only on phones and tablets (a block a site shows beside the text on a computer). */
|
|
1003
|
-
@media (width >= 64rem) {
|
|
1004
|
-
.block-small-screens {
|
|
1005
|
-
display: none;
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
/* A person: a small picture beside the name and a title under it. */
|
|
1010
|
-
.block-person {
|
|
1011
|
-
display: flex;
|
|
1012
|
-
align-items: center;
|
|
1013
|
-
gap: 1rem;
|
|
1014
|
-
}
|
|
1015
|
-
.block-person-picture {
|
|
1016
|
-
width: 3.5rem;
|
|
1017
|
-
height: 3.5rem;
|
|
1018
|
-
flex-shrink: 0;
|
|
1019
|
-
border-radius: var(--block-radius-small);
|
|
1020
|
-
object-fit: cover;
|
|
1021
|
-
object-position: 50% 20%;
|
|
1022
|
-
}
|
|
1023
|
-
.block-person-name {
|
|
1024
|
-
display: block;
|
|
1025
|
-
font-size: var(--type-title-medium-size);
|
|
1026
|
-
line-height: var(--type-title-medium-line-height);
|
|
1027
|
-
font-weight: var(--type-title-medium-weight);
|
|
1028
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
1029
|
-
}
|
|
1030
|
-
.block-person-role {
|
|
1031
|
-
display: block;
|
|
1032
|
-
font-size: var(--type-body-medium-size);
|
|
1033
|
-
line-height: var(--type-body-medium-line-height);
|
|
1034
|
-
font-weight: var(--type-body-medium-weight);
|
|
1035
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1036
|
-
color: var(--block-muted);
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
/* A list with an icon in the accent before each line. */
|
|
1040
|
-
.block-icon-list {
|
|
1041
|
-
display: grid;
|
|
1042
|
-
gap: 0.6rem;
|
|
1043
|
-
margin: 0;
|
|
1044
|
-
padding: 0;
|
|
1045
|
-
list-style: none;
|
|
1046
|
-
font-size: var(--type-body-medium-size);
|
|
1047
|
-
line-height: var(--type-body-medium-line-height);
|
|
1048
|
-
font-weight: var(--type-body-medium-weight);
|
|
1049
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1050
|
-
}
|
|
1051
|
-
.block-icon-list > li {
|
|
1052
|
-
display: flex;
|
|
1053
|
-
align-items: flex-start;
|
|
1054
|
-
gap: 0.75rem;
|
|
1055
|
-
}
|
|
1056
|
-
.block-icon-list svg {
|
|
1057
|
-
flex-shrink: 0;
|
|
1058
|
-
margin-top: 0.05rem;
|
|
1059
|
-
color: var(--block-accent);
|
|
1060
|
-
}
|
|
1061
|
-
|
|
1062
|
-
/* Facts side by side, each a quiet name over its value, the last one to the right (a duration and a
|
|
1063
|
-
price). */
|
|
1064
|
-
.block-facts {
|
|
1065
|
-
display: grid;
|
|
1066
|
-
grid-template-columns: 1fr auto;
|
|
1067
|
-
gap: 1rem;
|
|
1068
|
-
margin: 0;
|
|
1069
|
-
}
|
|
1070
|
-
.block-facts dt {
|
|
1071
|
-
font-size: var(--type-body-medium-size);
|
|
1072
|
-
line-height: var(--type-body-medium-line-height);
|
|
1073
|
-
font-weight: var(--type-body-medium-weight);
|
|
1074
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1075
|
-
color: var(--block-muted);
|
|
1076
|
-
}
|
|
1077
|
-
.block-facts dd {
|
|
1078
|
-
margin: 0.15rem 0 0;
|
|
1079
|
-
font-weight: 500;
|
|
1080
|
-
}
|
|
1081
|
-
.block-facts > :last-child {
|
|
1082
|
-
text-align: right;
|
|
1083
|
-
}
|
|
1084
|
-
.block-facts-amount {
|
|
1085
|
-
font-size: var(--type-title-large-size);
|
|
1086
|
-
line-height: var(--type-title-large-line-height);
|
|
1087
|
-
font-weight: var(--type-title-large-weight);
|
|
1088
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
1089
|
-
font-variant-numeric: tabular-nums;
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1092
|
-
/* A table: quiet headings over rows with a thin line between them, the first column (each row's name) a little
|
|
1093
|
-
heavier; wider than the screen, it scrolls sideways ("Cookieliste"). */
|
|
1094
|
-
.block-table {
|
|
1095
|
-
overflow-x: auto;
|
|
1096
|
-
}
|
|
1097
|
-
.block-table table {
|
|
1098
|
-
width: 100%;
|
|
1099
|
-
min-width: 40rem;
|
|
1100
|
-
border-collapse: collapse;
|
|
1101
|
-
font-size: var(--type-body-medium-size);
|
|
1102
|
-
line-height: var(--type-body-medium-line-height);
|
|
1103
|
-
font-weight: var(--type-body-medium-weight);
|
|
1104
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1105
|
-
}
|
|
1106
|
-
.block-table :is(th, td) {
|
|
1107
|
-
padding: 0.625rem 1rem 0.625rem 0;
|
|
1108
|
-
border-bottom: 1px solid var(--block-line);
|
|
1109
|
-
text-align: left;
|
|
1110
|
-
vertical-align: top;
|
|
1111
|
-
}
|
|
1112
|
-
.block-table thead th {
|
|
1113
|
-
font-size: var(--type-label-large-size);
|
|
1114
|
-
line-height: var(--type-label-large-line-height);
|
|
1115
|
-
font-weight: var(--type-label-large-weight);
|
|
1116
|
-
letter-spacing: var(--type-label-large-tracking);
|
|
1117
|
-
color: var(--block-muted);
|
|
1118
|
-
}
|
|
1119
|
-
.block-table tbody th {
|
|
1120
|
-
font-weight: 500;
|
|
1121
|
-
white-space: nowrap;
|
|
1122
|
-
}
|
|
1123
|
-
.block-table td:not(:nth-child(3)) {
|
|
1124
|
-
white-space: nowrap;
|
|
1125
|
-
}
|
|
1126
|
-
.block-table td:nth-child(3) {
|
|
1127
|
-
min-width: 14rem;
|
|
1128
|
-
}
|
|
1129
|
-
|
|
1130
|
-
/* A badge: a small word over a number in a light square ("Spar / 10%"), and a text beside one. */
|
|
1131
|
-
.block-badge {
|
|
1132
|
-
display: grid;
|
|
1133
|
-
width: 3.5rem;
|
|
1134
|
-
height: 3.5rem;
|
|
1135
|
-
flex-shrink: 0;
|
|
1136
|
-
place-content: center;
|
|
1137
|
-
border-radius: calc(var(--block-radius-small) - 0.25rem);
|
|
1138
|
-
background: var(--block-tint);
|
|
1139
|
-
color: var(--block-accent);
|
|
1140
|
-
text-align: center;
|
|
1141
|
-
line-height: 1.1;
|
|
1142
|
-
}
|
|
1143
|
-
.block-badge > span {
|
|
1144
|
-
font-size: var(--type-label-small-size);
|
|
1145
|
-
line-height: var(--type-label-small-line-height);
|
|
1146
|
-
font-weight: var(--type-label-small-weight);
|
|
1147
|
-
letter-spacing: var(--type-label-small-tracking);
|
|
1148
|
-
}
|
|
1149
|
-
.block-badge > strong {
|
|
1150
|
-
font-size: var(--type-title-medium-size);
|
|
1151
|
-
line-height: var(--type-title-medium-line-height);
|
|
1152
|
-
font-weight: var(--type-title-medium-weight);
|
|
1153
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
1154
|
-
font-variant-numeric: tabular-nums;
|
|
1155
|
-
}
|
|
1156
|
-
.block-with-badge {
|
|
1157
|
-
display: flex;
|
|
1158
|
-
align-items: flex-start;
|
|
1159
|
-
gap: 1rem;
|
|
1160
|
-
font-size: var(--type-body-medium-size);
|
|
1161
|
-
line-height: var(--type-body-medium-line-height);
|
|
1162
|
-
font-weight: var(--type-body-medium-weight);
|
|
1163
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1164
|
-
}
|
|
1165
|
-
.block-with-badge > p {
|
|
1166
|
-
margin: 0;
|
|
1167
|
-
}
|
|
1168
|
-
|
|
1169
|
-
/* A quiet link that is one row, an outlined card (.card in ui.css) with smaller corners: a badge or an icon, a text
|
|
1170
|
-
and an arrow, its edge in the accent when pointed at. */
|
|
1171
|
-
.block-link-row {
|
|
1172
|
-
display: flex;
|
|
1173
|
-
align-items: center;
|
|
1174
|
-
gap: 1rem;
|
|
1175
|
-
--card-radius: var(--block-radius-small);
|
|
1176
|
-
--card-padding: 0.85rem 1.1rem 0.85rem 0.85rem;
|
|
1177
|
-
font-size: var(--type-body-large-size);
|
|
1178
|
-
line-height: var(--type-body-large-line-height);
|
|
1179
|
-
font-weight: var(--type-body-large-weight);
|
|
1180
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
1181
|
-
transition: box-shadow var(--motion-effects);
|
|
1182
|
-
}
|
|
1183
|
-
.block-link-row.block-in-text {
|
|
1184
|
-
margin-block: 1.75rem;
|
|
1185
|
-
}
|
|
1186
|
-
.block-link-row-text {
|
|
1187
|
-
flex: 1;
|
|
1188
|
-
}
|
|
1189
|
-
.block-link-row-arrow {
|
|
1190
|
-
flex-shrink: 0;
|
|
1191
|
-
color: var(--block-accent);
|
|
1192
|
-
transition: transform var(--motion-spatial);
|
|
1193
|
-
}
|
|
1194
|
-
a.block-link-row:hover {
|
|
1195
|
-
--card-outlined-line: var(--block-accent);
|
|
1196
|
-
}
|
|
1197
|
-
a.block-link-row:hover .block-link-row-arrow {
|
|
1198
|
-
transform: translateX(3px);
|
|
1199
|
-
}
|
|
1200
|
-
|
|
1201
|
-
/* An invitation, a filled card (.card in ui.css): a picture, a heading and a text, and buttons under each other
|
|
1202
|
-
(e.g. an app's booking block); on a computer the three side by side. */
|
|
1203
|
-
.block-cta {
|
|
1204
|
-
display: grid;
|
|
1205
|
-
gap: 1.5rem;
|
|
1206
|
-
}
|
|
1207
|
-
.block-cta.block-in-text {
|
|
1208
|
-
margin-block: 2.5rem;
|
|
1209
|
-
}
|
|
1210
|
-
.block-cta-picture {
|
|
1211
|
-
width: 5rem;
|
|
1212
|
-
height: 5rem;
|
|
1213
|
-
border-radius: var(--block-radius-small);
|
|
1214
|
-
object-fit: cover;
|
|
1215
|
-
object-position: 50% 20%;
|
|
1216
|
-
}
|
|
1217
|
-
.block-cta-title {
|
|
1218
|
-
margin: 0;
|
|
1219
|
-
font-size: var(--type-headline-small-size);
|
|
1220
|
-
line-height: var(--type-headline-small-line-height);
|
|
1221
|
-
font-weight: var(--type-headline-small-weight);
|
|
1222
|
-
letter-spacing: var(--type-headline-small-tracking);
|
|
1223
|
-
}
|
|
1224
|
-
.block-cta-text {
|
|
1225
|
-
margin-top: 0.5rem;
|
|
1226
|
-
max-width: 48ch;
|
|
1227
|
-
color: var(--block-muted);
|
|
1228
|
-
}
|
|
1229
|
-
.block-cta-buttons {
|
|
1230
|
-
display: grid;
|
|
1231
|
-
gap: 0.625rem;
|
|
1232
|
-
}
|
|
1233
|
-
|
|
1234
|
-
/* Prices: the big ones as cards side by side, and the others as a list, a row each with the name and
|
|
1235
|
-
its details to the left and the price to the right, with a text under it. */
|
|
1236
|
-
.block-prices {
|
|
1237
|
-
display: grid;
|
|
1238
|
-
gap: 1rem;
|
|
1239
|
-
}
|
|
1240
|
-
.block-prices.block-in-text {
|
|
1241
|
-
margin-block: 2.5rem;
|
|
1242
|
-
}
|
|
1243
|
-
.block-price-cards {
|
|
1244
|
-
display: grid;
|
|
1245
|
-
gap: 1rem;
|
|
1246
|
-
}
|
|
1247
|
-
/* A big price, an elevated card (.card in ui.css). */
|
|
1248
|
-
.block-price-card {
|
|
1249
|
-
display: flex;
|
|
1250
|
-
flex-direction: column;
|
|
1251
|
-
}
|
|
1252
|
-
.block-price-card-head {
|
|
1253
|
-
display: flex;
|
|
1254
|
-
align-items: flex-start;
|
|
1255
|
-
justify-content: space-between;
|
|
1256
|
-
gap: 1rem;
|
|
1257
|
-
}
|
|
1258
|
-
.block-price-card-title {
|
|
1259
|
-
margin: 0;
|
|
1260
|
-
font-size: var(--type-headline-small-size);
|
|
1261
|
-
line-height: var(--type-headline-small-line-height);
|
|
1262
|
-
font-weight: var(--type-headline-small-weight);
|
|
1263
|
-
letter-spacing: var(--type-headline-small-tracking);
|
|
1264
|
-
}
|
|
1265
|
-
/* A small fact in a light pill (the duration), its icon in the accent. */
|
|
1266
|
-
.block-tag {
|
|
1267
|
-
display: inline-flex;
|
|
1268
|
-
flex-shrink: 0;
|
|
1269
|
-
align-items: center;
|
|
1270
|
-
gap: 0.375rem;
|
|
1271
|
-
margin-top: 0.25rem;
|
|
1272
|
-
border-radius: var(--block-control-radius);
|
|
1273
|
-
background: var(--block-tint);
|
|
1274
|
-
padding: 0.25rem 0.75rem;
|
|
1275
|
-
font-size: var(--type-label-large-size);
|
|
1276
|
-
line-height: var(--type-label-large-line-height);
|
|
1277
|
-
font-weight: var(--type-label-large-weight);
|
|
1278
|
-
letter-spacing: var(--type-label-large-tracking);
|
|
1279
|
-
}
|
|
1280
|
-
.block-tag svg {
|
|
1281
|
-
color: var(--block-accent);
|
|
1282
|
-
}
|
|
1283
|
-
.block-price-amount {
|
|
1284
|
-
margin-top: 1.5rem;
|
|
1285
|
-
font-size: var(--type-display-medium-size);
|
|
1286
|
-
line-height: var(--type-display-medium-line-height);
|
|
1287
|
-
font-weight: var(--type-display-medium-weight);
|
|
1288
|
-
letter-spacing: var(--type-display-medium-tracking);
|
|
1289
|
-
font-variant-numeric: tabular-nums;
|
|
1290
|
-
}
|
|
1291
|
-
.block-price-unit {
|
|
1292
|
-
margin-top: 0.25rem;
|
|
1293
|
-
color: var(--block-muted);
|
|
1294
|
-
}
|
|
1295
|
-
/* A punch card's offer in a price card, a filled card with smaller corners. */
|
|
1296
|
-
.block-price-extra {
|
|
1297
|
-
margin-top: 1.5rem;
|
|
1298
|
-
--card-radius: var(--block-radius-small);
|
|
1299
|
-
--card-padding: 1rem;
|
|
1300
|
-
}
|
|
1301
|
-
.block-price-extra-title {
|
|
1302
|
-
display: flex;
|
|
1303
|
-
align-items: center;
|
|
1304
|
-
gap: 0.5rem;
|
|
1305
|
-
font-weight: 500;
|
|
1306
|
-
}
|
|
1307
|
-
.block-price-extra-title svg {
|
|
1308
|
-
color: var(--block-accent);
|
|
1309
|
-
}
|
|
1310
|
-
.block-price-extra-text {
|
|
1311
|
-
margin-top: 0.25rem;
|
|
1312
|
-
color: var(--block-muted);
|
|
1313
|
-
}
|
|
1314
|
-
.block-price-extra-text strong {
|
|
1315
|
-
color: var(--block-text);
|
|
1316
|
-
font-weight: 500;
|
|
1317
|
-
font-variant-numeric: tabular-nums;
|
|
1318
|
-
}
|
|
1319
|
-
.block-price-card > .block-arrow-link {
|
|
1320
|
-
align-self: flex-start;
|
|
1321
|
-
margin-top: 1.5rem;
|
|
1322
|
-
}
|
|
1323
|
-
.block-price-list {
|
|
1324
|
-
margin: 0;
|
|
1325
|
-
border: 1px solid var(--block-line);
|
|
1326
|
-
border-radius: var(--block-radius);
|
|
1327
|
-
padding: 0 1.5rem;
|
|
1328
|
-
list-style: none;
|
|
1329
|
-
}
|
|
1330
|
-
.block-price-row {
|
|
1331
|
-
display: grid;
|
|
1332
|
-
gap: 0.25rem 1.5rem;
|
|
1333
|
-
padding-block: 1.25rem;
|
|
1334
|
-
}
|
|
1335
|
-
.block-price-row + .block-price-row {
|
|
1336
|
-
border-top: 1px solid var(--block-line);
|
|
1337
|
-
}
|
|
1338
|
-
.block-price-row-name {
|
|
1339
|
-
font-size: var(--type-title-medium-size);
|
|
1340
|
-
line-height: var(--type-title-medium-line-height);
|
|
1341
|
-
font-weight: var(--type-title-medium-weight);
|
|
1342
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
1343
|
-
color: inherit;
|
|
1344
|
-
text-decoration: none;
|
|
1345
|
-
}
|
|
1346
|
-
a.block-price-row-name:hover {
|
|
1347
|
-
color: var(--block-accent);
|
|
1348
|
-
}
|
|
1349
|
-
.block-price-row-text {
|
|
1350
|
-
font-size: var(--type-body-medium-size);
|
|
1351
|
-
line-height: var(--type-body-medium-line-height);
|
|
1352
|
-
font-weight: var(--type-body-medium-weight);
|
|
1353
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1354
|
-
color: var(--block-muted);
|
|
1355
|
-
}
|
|
1356
|
-
.block-price-row-note {
|
|
1357
|
-
margin-top: 0.25rem;
|
|
1358
|
-
max-width: 60ch;
|
|
1359
|
-
font-size: var(--type-body-medium-size);
|
|
1360
|
-
line-height: var(--type-body-medium-line-height);
|
|
1361
|
-
font-weight: var(--type-body-medium-weight);
|
|
1362
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1363
|
-
color: var(--block-muted);
|
|
1364
|
-
}
|
|
1365
|
-
.block-price-row-price {
|
|
1366
|
-
font-size: var(--type-headline-small-size);
|
|
1367
|
-
line-height: var(--type-headline-small-line-height);
|
|
1368
|
-
font-weight: var(--type-headline-small-weight);
|
|
1369
|
-
letter-spacing: var(--type-headline-small-tracking);
|
|
1370
|
-
font-variant-numeric: tabular-nums;
|
|
1371
|
-
}
|
|
1372
|
-
.block-price-row-price > span {
|
|
1373
|
-
display: block;
|
|
1374
|
-
font-size: var(--type-body-medium-size);
|
|
1375
|
-
line-height: var(--type-body-medium-line-height);
|
|
1376
|
-
font-weight: var(--type-body-medium-weight);
|
|
1377
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1378
|
-
color: var(--block-muted);
|
|
1379
|
-
}
|
|
1380
|
-
/* A quiet text with an icon before it (the terms under the prices). */
|
|
1381
|
-
.block-terms {
|
|
1382
|
-
display: flex;
|
|
1383
|
-
gap: 0.625rem;
|
|
1384
|
-
margin-top: 1rem;
|
|
1385
|
-
max-width: 70ch;
|
|
1386
|
-
font-size: var(--type-body-medium-size);
|
|
1387
|
-
line-height: var(--type-body-medium-line-height);
|
|
1388
|
-
font-weight: var(--type-body-medium-weight);
|
|
1389
|
-
letter-spacing: var(--type-body-medium-tracking);
|
|
1390
|
-
color: var(--block-muted);
|
|
1391
|
-
}
|
|
1392
|
-
.block-terms svg {
|
|
1393
|
-
flex-shrink: 0;
|
|
1394
|
-
margin-top: 0.125rem;
|
|
1395
|
-
}
|
|
1396
|
-
|
|
1397
|
-
@media (hover: hover) {
|
|
1398
|
-
a.block-card:hover {
|
|
1399
|
-
--card-outlined-line: var(--block-accent);
|
|
1400
|
-
}
|
|
1401
|
-
a.block-card:hover .block-card-arrow {
|
|
1402
|
-
translate: 0.25rem 0;
|
|
1403
|
-
}
|
|
1404
|
-
a.block-card:hover .block-card-picture img {
|
|
1405
|
-
scale: 1.03;
|
|
1406
|
-
}
|
|
1407
|
-
}
|
|
1408
|
-
@media (width >= 40rem) {
|
|
1409
|
-
.block-buttons {
|
|
1410
|
-
flex-direction: row;
|
|
1411
|
-
flex-wrap: wrap;
|
|
1412
|
-
}
|
|
1413
|
-
.block-cards {
|
|
1414
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1415
|
-
}
|
|
1416
|
-
.block-price-row {
|
|
1417
|
-
grid-template-columns: 1fr auto;
|
|
1418
|
-
}
|
|
1419
|
-
.block-price-row-price {
|
|
1420
|
-
text-align: right;
|
|
1421
|
-
}
|
|
1422
|
-
}
|
|
1423
|
-
@media (width >= 48rem) {
|
|
1424
|
-
.block-testimonial {
|
|
1425
|
-
--card-padding: 1.75rem;
|
|
1426
|
-
}
|
|
1427
|
-
.block-row-text {
|
|
1428
|
-
font-size: var(--type-body-large-size);
|
|
1429
|
-
line-height: var(--type-body-large-line-height);
|
|
1430
|
-
font-weight: var(--type-body-large-weight);
|
|
1431
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
1432
|
-
}
|
|
1433
|
-
.block-notice {
|
|
1434
|
-
padding: 1.25rem 1.5rem;
|
|
1435
|
-
}
|
|
1436
|
-
.block-accordion-label {
|
|
1437
|
-
padding-inline: 2rem;
|
|
1438
|
-
font-size: var(--type-title-medium-size);
|
|
1439
|
-
line-height: var(--type-title-medium-line-height);
|
|
1440
|
-
font-weight: var(--type-title-medium-weight);
|
|
1441
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
1442
|
-
}
|
|
1443
|
-
.block-accordion-body {
|
|
1444
|
-
padding: 0 2rem 2rem;
|
|
1445
|
-
}
|
|
1446
|
-
.block-accordion-answer {
|
|
1447
|
-
font-size: var(--type-body-large-size);
|
|
1448
|
-
line-height: var(--type-body-large-line-height);
|
|
1449
|
-
font-weight: var(--type-body-large-weight);
|
|
1450
|
-
letter-spacing: var(--type-body-large-tracking);
|
|
1451
|
-
}
|
|
1452
|
-
.block-cta {
|
|
1453
|
-
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
1454
|
-
align-items: center;
|
|
1455
|
-
gap: 2.5rem;
|
|
1456
|
-
--card-padding: 3rem;
|
|
1457
|
-
}
|
|
1458
|
-
.block-cta-picture {
|
|
1459
|
-
grid-column: span 2;
|
|
1460
|
-
width: 7rem;
|
|
1461
|
-
height: 7rem;
|
|
1462
|
-
}
|
|
1463
|
-
.block-cta-body {
|
|
1464
|
-
grid-column: span 6;
|
|
1465
|
-
}
|
|
1466
|
-
.block-cta-buttons {
|
|
1467
|
-
grid-column: span 4;
|
|
1468
|
-
}
|
|
1469
|
-
.block-cta-title {
|
|
1470
|
-
font-size: var(--type-headline-medium-size);
|
|
1471
|
-
line-height: var(--type-headline-medium-line-height);
|
|
1472
|
-
font-weight: var(--type-headline-medium-weight);
|
|
1473
|
-
letter-spacing: var(--type-headline-medium-tracking);
|
|
1474
|
-
}
|
|
1475
|
-
.block-prices,
|
|
1476
|
-
.block-price-cards {
|
|
1477
|
-
gap: 1.25rem;
|
|
1478
|
-
}
|
|
1479
|
-
.block-price-cards {
|
|
1480
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1481
|
-
}
|
|
1482
|
-
.block-price-card {
|
|
1483
|
-
--card-padding: 2rem;
|
|
1484
|
-
}
|
|
1485
|
-
.block-price-card-title {
|
|
1486
|
-
font-size: var(--type-headline-medium-size);
|
|
1487
|
-
line-height: var(--type-headline-medium-line-height);
|
|
1488
|
-
font-weight: var(--type-headline-medium-weight);
|
|
1489
|
-
letter-spacing: var(--type-headline-medium-tracking);
|
|
1490
|
-
}
|
|
1491
|
-
.block-price-amount {
|
|
1492
|
-
font-size: var(--type-display-large-size);
|
|
1493
|
-
line-height: var(--type-display-large-line-height);
|
|
1494
|
-
font-weight: var(--type-display-large-weight);
|
|
1495
|
-
letter-spacing: var(--type-display-large-tracking);
|
|
1496
|
-
}
|
|
1497
|
-
.block-price-list {
|
|
1498
|
-
padding-inline: 2rem;
|
|
1499
|
-
}
|
|
1500
|
-
}
|
|
1501
|
-
/* ---- "Tjekliste" and "Priskort" ---- */
|
|
1502
|
-
|
|
1503
|
-
/* "Tjekliste" (checklist/Checks.tsx), and what is included on a price card: a list without dividers (.list in
|
|
1504
|
-
ui.css), a check before each line; with six or more (not on a card), two columns where there is room for 16rem
|
|
1505
|
-
each, never more. Nothing in it is tapped, so it is spaced as a bulleted or numbered list in the text (half a
|
|
1506
|
-
line between its lines, not the height of a list item one taps), and its checks start where the text around it
|
|
1507
|
-
does. */
|
|
1508
|
-
.block-checklist {
|
|
1509
|
-
--list-item-min-height: auto;
|
|
1510
|
-
--list-item-padding-block: 0.25em;
|
|
1511
|
-
--list-item-padding-inline: 0;
|
|
1512
|
-
}
|
|
1513
|
-
.block-checklist.block-in-text {
|
|
1514
|
-
margin-block: 1rem;
|
|
1515
|
-
}
|
|
1516
|
-
.block-checklist:not(.block-plan-features):has(> :nth-child(6)) {
|
|
1517
|
-
display: grid;
|
|
1518
|
-
grid-template-columns: repeat(auto-fit, minmax(min(100%, max(16rem, calc(50% - 1rem))), 1fr));
|
|
1519
|
-
column-gap: 2rem;
|
|
1520
|
-
}
|
|
1521
|
-
|
|
1522
|
-
/* "Priskort" (pricecards/View.tsx): the cards side by side, as many columns as there are cards where the block has
|
|
1523
|
-
room for them (it is a container: two from 34rem, three from 40rem, four from 56rem; four two by two before that),
|
|
1524
|
-
else under each other. Each card an outlined card (.card in ui.css): its name, its price large with what it is for
|
|
1525
|
-
beside it, its text, what is included under a line (.block-checklist) and its button at the bottom in the card's
|
|
1526
|
-
width, so the buttons of cards side by side are in line; the highlighted one with an edge in the accent and its
|
|
1527
|
-
label in a pill in the accent over its name. */
|
|
1528
|
-
.block-plans {
|
|
1529
|
-
container-type: inline-size;
|
|
1530
|
-
}
|
|
1531
|
-
.block-plans.block-in-text {
|
|
1532
|
-
margin-block: 2.5rem;
|
|
1533
|
-
}
|
|
1534
|
-
.block-plans-list {
|
|
1535
|
-
display: grid;
|
|
1536
|
-
gap: 1rem;
|
|
1537
|
-
margin: 0;
|
|
1538
|
-
padding: 0;
|
|
1539
|
-
list-style: none;
|
|
1540
|
-
}
|
|
1541
|
-
@container (width >= 34rem) {
|
|
1542
|
-
.block-plans-2,
|
|
1543
|
-
.block-plans-4 {
|
|
1544
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1545
|
-
}
|
|
1546
|
-
}
|
|
1547
|
-
@container (width >= 40rem) {
|
|
1548
|
-
.block-plans-3 {
|
|
1549
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1550
|
-
}
|
|
1551
|
-
}
|
|
1552
|
-
@container (width >= 56rem) {
|
|
1553
|
-
.block-plans-4 {
|
|
1554
|
-
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
1555
|
-
}
|
|
1556
|
-
}
|
|
1557
|
-
.block-plan {
|
|
1558
|
-
display: flex;
|
|
1559
|
-
flex-direction: column;
|
|
1560
|
-
color: var(--block-text);
|
|
1561
|
-
/* The price is as large as the card has room for (cqi). */
|
|
1562
|
-
container-type: inline-size;
|
|
1563
|
-
}
|
|
1564
|
-
.block-plan-featured {
|
|
1565
|
-
box-shadow: inset 0 0 0 2px var(--block-accent);
|
|
1566
|
-
}
|
|
1567
|
-
.block-plan-badge {
|
|
1568
|
-
align-self: flex-start;
|
|
1569
|
-
margin-bottom: 0.75rem;
|
|
1570
|
-
border-radius: var(--block-control-radius);
|
|
1571
|
-
background: var(--block-accent);
|
|
1572
|
-
color: var(--block-on-accent);
|
|
1573
|
-
padding: 0.25rem 0.75rem;
|
|
1574
|
-
font-size: var(--type-label-medium-size);
|
|
1575
|
-
line-height: var(--type-label-medium-line-height);
|
|
1576
|
-
font-weight: var(--type-label-medium-weight);
|
|
1577
|
-
letter-spacing: var(--type-label-medium-tracking);
|
|
1578
|
-
}
|
|
1579
|
-
.block-plan-name {
|
|
1580
|
-
margin: 0;
|
|
1581
|
-
font-size: var(--type-title-large-size);
|
|
1582
|
-
line-height: var(--type-title-large-line-height);
|
|
1583
|
-
font-weight: var(--type-title-large-weight);
|
|
1584
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
1585
|
-
}
|
|
1586
|
-
.block-plan-price {
|
|
1587
|
-
display: flex;
|
|
1588
|
-
flex-wrap: wrap;
|
|
1589
|
-
align-items: baseline;
|
|
1590
|
-
gap: 0.25rem 0.5rem;
|
|
1591
|
-
margin: 1rem 0 0;
|
|
1592
|
-
}
|
|
1593
|
-
.block-plan-amount {
|
|
1594
|
-
font-size: clamp(var(--type-headline-small-size), 16cqi, var(--type-display-small-size));
|
|
1595
|
-
line-height: var(--type-headline-large-line-height);
|
|
1596
|
-
font-weight: var(--type-headline-large-weight);
|
|
1597
|
-
letter-spacing: var(--type-headline-large-tracking);
|
|
1598
|
-
font-variant-numeric: tabular-nums;
|
|
1599
|
-
}
|
|
1600
|
-
.block-plan-unit {
|
|
1601
|
-
color: var(--block-muted);
|
|
1602
|
-
}
|
|
1603
|
-
.block-plan-text {
|
|
1604
|
-
margin: 0.75rem 0 0;
|
|
1605
|
-
color: var(--block-muted);
|
|
1606
|
-
}
|
|
1607
|
-
.block-plan-features {
|
|
1608
|
-
margin-top: 1.5rem;
|
|
1609
|
-
border-top: 1px solid var(--block-line);
|
|
1610
|
-
padding-top: 0.5rem;
|
|
1611
|
-
}
|
|
1612
|
-
.block-buttons.block-plan-buttons {
|
|
1613
|
-
flex-direction: column;
|
|
1614
|
-
margin-top: auto;
|
|
1615
|
-
padding-top: 1.5rem;
|
|
1616
|
-
}
|
|
1617
|
-
/* A narrow card: a long text on its button goes onto two lines rather than out of the card. */
|
|
1618
|
-
.block-plan-buttons .button {
|
|
1619
|
-
padding-block: 0.75rem;
|
|
1620
|
-
padding-inline: 1rem;
|
|
1621
|
-
white-space: normal;
|
|
1622
|
-
text-align: center;
|
|
1623
|
-
line-height: 1.25;
|
|
1624
|
-
}
|
|
1625
|
-
|
|
1626
|
-
/* ---- end of "Tjekliste" and "Priskort" ---- */
|
|
1627
|
-
|
|
1628
|
-
/* Opening and closing glide where the browser can animate ::details-content (else the script in
|
|
1629
|
-
Accordion.tsx does it); none with reduced motion. */
|
|
1630
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
1631
|
-
.block-accordion {
|
|
1632
|
-
interpolate-size: allow-keywords;
|
|
1633
|
-
}
|
|
1634
|
-
.block-accordion-row::details-content {
|
|
1635
|
-
block-size: 0;
|
|
1636
|
-
overflow-y: clip;
|
|
1637
|
-
transition:
|
|
1638
|
-
block-size var(--motion-spatial),
|
|
1639
|
-
content-visibility var(--motion-spatial-duration) allow-discrete;
|
|
1640
|
-
}
|
|
1641
|
-
.block-accordion-row[open]::details-content {
|
|
1642
|
-
block-size: auto;
|
|
1643
|
-
}
|
|
1644
|
-
}
|
|
1645
|
-
@media (prefers-reduced-motion: reduce) {
|
|
1646
|
-
.block-accordion-label,
|
|
1647
|
-
.block-accordion-icon,
|
|
1648
|
-
.block-card,
|
|
1649
|
-
.block-card-arrow,
|
|
1650
|
-
.block-card-picture img {
|
|
1651
|
-
transition: none;
|
|
1652
|
-
}
|
|
1653
|
-
}
|
|
1654
|
-
}
|
|
1655
|
-
|
|
1656
|
-
/* "Video": the video before it is played (video/, packages/editor/lib/video.mjs); the video takes its
|
|
1657
|
-
place. Outside the layers, as it is a link in the text's style (.prose), whose link style it undoes. */
|
|
1658
|
-
.prose .video-facade {
|
|
1659
|
-
display: flex;
|
|
1660
|
-
flex-direction: column;
|
|
1661
|
-
align-items: center;
|
|
1662
|
-
justify-content: center;
|
|
1663
|
-
gap: 0.5rem;
|
|
1664
|
-
width: 100%;
|
|
1665
|
-
aspect-ratio: 16 / 9;
|
|
1666
|
-
margin-block: 2em;
|
|
1667
|
-
padding: 1.5rem;
|
|
1668
|
-
border-radius: var(--block-radius);
|
|
1669
|
-
background: var(--block-tint);
|
|
1670
|
-
color: var(--block-text);
|
|
1671
|
-
text-align: center;
|
|
1672
|
-
text-decoration: none;
|
|
1673
|
-
}
|
|
1674
|
-
.prose .video-facade svg {
|
|
1675
|
-
color: var(--block-accent);
|
|
1676
|
-
transition: transform var(--motion-spatial);
|
|
1677
|
-
}
|
|
1678
|
-
.prose .video-facade:hover svg {
|
|
1679
|
-
transform: scale(1.08);
|
|
1680
|
-
}
|
|
1681
|
-
/* At most two lines; a longer title ends with "…" (the whole title is still the link's name). */
|
|
1682
|
-
.video-facade-title {
|
|
1683
|
-
display: -webkit-box;
|
|
1684
|
-
max-width: 40ch;
|
|
1685
|
-
overflow: hidden;
|
|
1686
|
-
font-size: var(--type-title-medium-size);
|
|
1687
|
-
line-height: var(--type-title-medium-line-height);
|
|
1688
|
-
font-weight: var(--type-title-medium-weight);
|
|
1689
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
1690
|
-
-webkit-box-orient: vertical;
|
|
1691
|
-
-webkit-line-clamp: 2;
|
|
1692
|
-
line-clamp: 2;
|
|
1693
|
-
}
|
|
1694
|
-
/* With a still from the video (packages/editor/scripts/video-thumbnails.mjs), as on YouTube: the still fills the
|
|
1695
|
-
box, the white play button in the middle of the box (not of the space above the title), the title
|
|
1696
|
-
at the bottom over a shade. */
|
|
1697
|
-
.prose .video-facade-still {
|
|
1698
|
-
position: relative;
|
|
1699
|
-
isolation: isolate;
|
|
1700
|
-
overflow: hidden;
|
|
1701
|
-
align-items: flex-start;
|
|
1702
|
-
justify-content: flex-end;
|
|
1703
|
-
gap: 0.25rem;
|
|
1704
|
-
padding: 1rem 1.25rem;
|
|
1705
|
-
background: #000;
|
|
1706
|
-
color: #fff;
|
|
1707
|
-
text-align: left;
|
|
1708
|
-
}
|
|
1709
|
-
.prose .video-facade-still::after {
|
|
1710
|
-
content: '';
|
|
1711
|
-
position: absolute;
|
|
1712
|
-
inset: 0;
|
|
1713
|
-
z-index: -1;
|
|
1714
|
-
background: linear-gradient(to bottom, rgb(0 0 0 / 0.15) 40%, rgb(0 0 0 / 0.75));
|
|
1715
|
-
}
|
|
1716
|
-
.prose .video-facade-still .video-facade-image {
|
|
1717
|
-
position: absolute;
|
|
1718
|
-
inset: 0;
|
|
1719
|
-
z-index: -2;
|
|
1720
|
-
width: 100%;
|
|
1721
|
-
height: 100%;
|
|
1722
|
-
margin: 0;
|
|
1723
|
-
object-fit: cover;
|
|
1724
|
-
}
|
|
1725
|
-
.prose .video-facade-still svg {
|
|
1726
|
-
position: absolute;
|
|
1727
|
-
inset: 0;
|
|
1728
|
-
margin: auto;
|
|
1729
|
-
color: #fff;
|
|
1730
|
-
filter: drop-shadow(0 2px 8px rgb(0 0 0 / 0.5));
|
|
1731
|
-
}
|
|
1732
|
-
.video-facade-still .video-facade-title {
|
|
1733
|
-
font-size: var(--type-title-small-size);
|
|
1734
|
-
line-height: var(--type-title-small-line-height);
|
|
1735
|
-
font-weight: var(--type-title-small-weight);
|
|
1736
|
-
letter-spacing: var(--type-title-small-tracking);
|
|
1737
|
-
color: #fff;
|
|
1738
|
-
text-shadow: 0 1px 3px rgb(0 0 0 / 0.8);
|
|
1739
|
-
}
|
|
1740
|
-
@media (min-width: 768px) {
|
|
1741
|
-
.prose .video-facade-still svg {
|
|
1742
|
-
width: 4.5rem;
|
|
1743
|
-
height: 4.5rem;
|
|
1744
|
-
}
|
|
1745
|
-
.video-facade-still .video-facade-title {
|
|
1746
|
-
font-size: var(--type-title-medium-size);
|
|
1747
|
-
line-height: var(--type-title-medium-line-height);
|
|
1748
|
-
font-weight: var(--type-title-medium-weight);
|
|
1749
|
-
letter-spacing: var(--type-title-medium-tracking);
|
|
1750
|
-
}
|
|
1751
|
-
}
|
|
1752
|
-
|
|
1753
|
-
/* A block's head with a label above its heading or a subheading under it (BlockHead.tsx in blocks/, an <hgroup>; only a
|
|
1754
|
-
heading is the text's own <h2>, without this): the label in small capitals, spaced out, in the accent; the
|
|
1755
|
-
subheading larger and quiet. Mostly in the text's style (.prose), so outside the layers, like the video above, whose
|
|
1756
|
-
margins it sets in place of the text's; a theme that places a block outside the text sets its own (.block-place in
|
|
1757
|
-
the standard theme). A theme gives it its own look outside the layers too (the standard theme: in the middle). */
|
|
1758
|
-
.block-head {
|
|
1759
|
-
margin-block: 2.5em 1.25em;
|
|
1760
|
-
}
|
|
1761
|
-
.block-head:first-child {
|
|
1762
|
-
margin-top: 0;
|
|
1763
|
-
}
|
|
1764
|
-
.block-head > h2,
|
|
1765
|
-
.block-head > .block-eyebrow,
|
|
1766
|
-
.block-head > .block-subheading {
|
|
1767
|
-
margin-block: 0;
|
|
1768
|
-
}
|
|
1769
|
-
.block-head > * + h2,
|
|
1770
|
-
.block-head > * + .block-subheading {
|
|
1771
|
-
margin-top: 0.75rem;
|
|
1772
|
-
}
|
|
1773
|
-
.block-head > .block-eyebrow + h2 {
|
|
1774
|
-
margin-top: 0.5rem;
|
|
1775
|
-
}
|
|
1776
|
-
.block-head > .block-eyebrow {
|
|
1777
|
-
font-size: var(--type-label-medium-size);
|
|
1778
|
-
line-height: var(--type-label-medium-line-height);
|
|
1779
|
-
font-weight: var(--type-label-medium-weight);
|
|
1780
|
-
letter-spacing: 0.12em;
|
|
1781
|
-
text-transform: uppercase;
|
|
1782
|
-
color: var(--block-accent);
|
|
1783
|
-
}
|
|
1784
|
-
.block-head > .block-subheading {
|
|
1785
|
-
font-size: var(--type-title-large-size);
|
|
1786
|
-
line-height: var(--type-title-large-line-height);
|
|
1787
|
-
font-weight: var(--type-title-large-weight);
|
|
1788
|
-
letter-spacing: var(--type-title-large-tracking);
|
|
1789
|
-
color: var(--block-muted);
|
|
1790
|
-
}
|
|
1791
|
-
|
|
1792
|
-
/* A word or more in one of the site's colours, in a text (packages/editor/lib/text-colors.mjs, the colour button in the
|
|
1793
|
-
editor): the accent, or the quiet text's, both readable on the background, the surfaces and the tint (the site's
|
|
1794
|
-
pairs of colours, checked under "Farver"). Bold, italic and a link in it have its colour. Outside the layers, as it
|
|
1795
|
-
is in the text's style (.prose), whose colours of bold text and links it goes over. On a picture behind a hero's
|
|
1796
|
-
text, where only the text's colour can be read, it is the text's. */
|
|
1797
|
-
.color-accent,
|
|
1798
|
-
.color-accent :is(strong, em, a) {
|
|
1799
|
-
color: var(--block-accent);
|
|
1800
|
-
}
|
|
1801
|
-
.color-muted,
|
|
1802
|
-
.color-muted :is(strong, em, a) {
|
|
1803
|
-
color: var(--block-muted);
|
|
1804
|
-
}
|
|
1805
|
-
.block-hero-behind :is(.color-accent, .color-muted),
|
|
1806
|
-
.block-hero-behind :is(.color-accent, .color-muted) :is(strong, em, a) {
|
|
1807
|
-
color: inherit;
|
|
1808
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
The look of the standard blocks (their fields: packages/editor/src/standard/; their markup: blocks/ in this theme), on
|
|
3
|
+
the site and in the editor, in the standard theme. Every colour, shape and motion comes from a CSS variable, which a
|
|
4
|
+
theme sets to its own design in its own CSS:
|
|
5
|
+
|
|
6
|
+
:root { --block-accent: var(--accent); --block-radius: 1.5rem; }
|
|
7
|
+
|
|
8
|
+
Without them, the blocks have a plain look of their own (the values below). Sizes and spacing are
|
|
9
|
+
the blocks' own, in rem; their text has the site's font. Every theme imports this file into its CSS
|
|
10
|
+
(styles/global.css: the standard theme's, another theme's …), which the editor uses too.
|
|
11
|
+
|
|
12
|
+
--block-text text
|
|
13
|
+
--block-muted quieter text (an answer, a step's text)
|
|
14
|
+
--block-accent the one colour: a notice's edge, the step numbers, an open row, the play button,
|
|
15
|
+
a card's icon and link
|
|
16
|
+
--block-accent-hover the accent of a filled button pointed at (ui.css)
|
|
17
|
+
--block-on-accent text on the accent (the step numbers, a filled button)
|
|
18
|
+
--block-surface a raised surface (the rows that fold out, the cards)
|
|
19
|
+
--block-tint a light background (a notice, a video before it is played)
|
|
20
|
+
--block-line lines between rows and along the steps, the edge of a card
|
|
21
|
+
--block-radius the corners of a panel
|
|
22
|
+
--block-radius-small the corners of something smaller in or beside a panel (a picture in a list, a row, a badge's
|
|
23
|
+
square, a step on a time line)
|
|
24
|
+
--block-control-radius the corners of a button and a tag (a pill when large)
|
|
25
|
+
--block-shadow the shadow of a raised panel
|
|
26
|
+
--block-ease the easing of motion (else the motion scheme's, --motion-ease)
|
|
27
|
+
--block-ease-quick the easing of a quick change of state (a colour, an arrow that turns or moves; else the motion
|
|
28
|
+
scheme's, --motion-ease-quick)
|
|
29
|
+
--block-hero-shade, --block-hero-on-shade (optional) the colour a picture behind a hero's text is darkened with,
|
|
30
|
+
and the text's on it; without them the text's colour and the surface's
|
|
31
|
+
--block-page-width, --block-gutter the page's container (its width, gutters included, and its gutter at the
|
|
32
|
+
side), whose left edge the text starts at: how far a banner across the whole width reaches out
|
|
33
|
+
of the text to the window's edges, and where its content starts again (the standard theme's
|
|
34
|
+
Container.astro: 72rem, 1.25rem and 2rem from 48rem)
|
|
35
|
+
|
|
36
|
+
How things move is the site's motion scheme (Material 3's, chosen under "Udseende" › "Bevægelse"; lib/motion.ts), which
|
|
37
|
+
Base.astro writes into the <head> as springs, each its duration and curve, for `transition` and `animation`:
|
|
38
|
+
--motion-spatial-fast, --motion-spatial, --motion-spatial-slow something that moves, grows or changes shape
|
|
39
|
+
--motion-effects-fast, --motion-effects, --motion-effects-slow a colour, a shadow, something that fades
|
|
40
|
+
--motion-spatial-fast-duration … --motion-effects-slow-duration each one's duration alone, for what must last as
|
|
41
|
+
long as it (a visibility that waits for it, a display … allow-discrete)
|
|
42
|
+
--motion-ease, --motion-ease-quick the default spatial and effects curves alone, for a duration of one's own
|
|
43
|
+
Without them (a page without Base.astro's <head>), the values below: the standard scheme's lengths with Material's
|
|
44
|
+
standard curve.
|
|
45
|
+
|
|
46
|
+
A site sets the class `js` on <html> as early as it can (this site: Base.astro): then a long
|
|
47
|
+
testimonial is cut with "Læs mere" from the start; without it, the whole text is shown.
|
|
48
|
+
The mark before the name on a testimonial (.block-testimonial-mark) is the site's own: it is not shown
|
|
49
|
+
until the site gives it a look (the standard theme: an avatar with the name's first letter, its data-initial; another:
|
|
50
|
+
its logo).
|
|
51
|
+
*/
|
|
52
|
+
:where(:root) {
|
|
53
|
+
--block-text: #1f2328;
|
|
54
|
+
--block-muted: #59636e;
|
|
55
|
+
--block-accent: #0969da;
|
|
56
|
+
--block-accent-hover: #0550ae;
|
|
57
|
+
--block-on-accent: #ffffff;
|
|
58
|
+
--block-surface: #ffffff;
|
|
59
|
+
--block-tint: #f2f4f7;
|
|
60
|
+
--block-line: #d8dee4;
|
|
61
|
+
--block-radius: 0.75rem;
|
|
62
|
+
--block-radius-small: 1rem;
|
|
63
|
+
--block-control-radius: 0.5rem;
|
|
64
|
+
--block-shadow: 0 1px 3px rgb(0 0 0 / 0.12);
|
|
65
|
+
--motion-spatial-fast: 230ms cubic-bezier(0.2, 0, 0, 1);
|
|
66
|
+
--motion-spatial: 320ms cubic-bezier(0.2, 0, 0, 1);
|
|
67
|
+
--motion-spatial-slow: 490ms cubic-bezier(0.2, 0, 0, 1);
|
|
68
|
+
--motion-effects-fast: 150ms cubic-bezier(0.2, 0, 0, 1);
|
|
69
|
+
--motion-effects: 240ms cubic-bezier(0.2, 0, 0, 1);
|
|
70
|
+
--motion-effects-slow: 330ms cubic-bezier(0.2, 0, 0, 1);
|
|
71
|
+
--motion-spatial-fast-duration: 230ms;
|
|
72
|
+
--motion-spatial-duration: 320ms;
|
|
73
|
+
--motion-spatial-slow-duration: 490ms;
|
|
74
|
+
--motion-effects-fast-duration: 150ms;
|
|
75
|
+
--motion-effects-duration: 240ms;
|
|
76
|
+
--motion-effects-slow-duration: 330ms;
|
|
77
|
+
/* Tailwind's transition-colors, transition-opacity … without a duration of their own: the default effects spring. */
|
|
78
|
+
--default-transition-duration: var(--motion-effects-duration);
|
|
79
|
+
--default-transition-timing-function: var(--motion-ease-quick, cubic-bezier(0.2, 0, 0, 1));
|
|
80
|
+
--block-ease: var(--motion-ease, cubic-bezier(0.2, 0, 0, 1));
|
|
81
|
+
--block-ease-quick: var(--motion-ease-quick, cubic-bezier(0.2, 0, 0, 1));
|
|
82
|
+
--block-page-width: 72rem;
|
|
83
|
+
--block-gutter: 1.25rem;
|
|
84
|
+
}
|
|
85
|
+
@media (min-width: 48rem) {
|
|
86
|
+
:where(:root) {
|
|
87
|
+
--block-gutter: 2rem;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* In a site's layer of components, so the site's utilities (a margin on the steps) win over them. */
|
|
92
|
+
@layer components {
|
|
93
|
+
/* A block in the text of a page: the space above and below it. */
|
|
94
|
+
.block-in-text {
|
|
95
|
+
margin-block: 2rem;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* "Besked": a short notice in a box with the accent along its left edge (notice/). */
|
|
99
|
+
.block-notice {
|
|
100
|
+
border-left: 4px solid var(--block-accent);
|
|
101
|
+
border-radius: var(--block-radius);
|
|
102
|
+
background: var(--block-tint);
|
|
103
|
+
padding: 1rem 1.25rem;
|
|
104
|
+
font-size: var(--type-body-large-size);
|
|
105
|
+
line-height: var(--type-body-large-line-height);
|
|
106
|
+
font-weight: var(--type-body-large-weight);
|
|
107
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* "Trin": numbered steps along a line (steps/StepList.tsx). */
|
|
111
|
+
.block-steps {
|
|
112
|
+
position: relative;
|
|
113
|
+
max-width: 48rem;
|
|
114
|
+
}
|
|
115
|
+
.block-steps.block-in-text {
|
|
116
|
+
margin-block: 2.5rem;
|
|
117
|
+
}
|
|
118
|
+
.block-steps > :not(:last-child) {
|
|
119
|
+
margin-bottom: 2.5rem;
|
|
120
|
+
}
|
|
121
|
+
.block-steps-line {
|
|
122
|
+
position: absolute;
|
|
123
|
+
top: 1.5rem;
|
|
124
|
+
bottom: 1.5rem;
|
|
125
|
+
left: 1.5rem;
|
|
126
|
+
width: 1px;
|
|
127
|
+
background: var(--block-line);
|
|
128
|
+
}
|
|
129
|
+
.block-step {
|
|
130
|
+
position: relative;
|
|
131
|
+
display: flex;
|
|
132
|
+
gap: 1.25rem;
|
|
133
|
+
}
|
|
134
|
+
.block-step-number {
|
|
135
|
+
position: relative;
|
|
136
|
+
display: grid;
|
|
137
|
+
width: 3rem;
|
|
138
|
+
height: 3rem;
|
|
139
|
+
flex-shrink: 0;
|
|
140
|
+
place-items: center;
|
|
141
|
+
border-radius: 9999px;
|
|
142
|
+
background: var(--block-accent);
|
|
143
|
+
color: var(--block-on-accent);
|
|
144
|
+
font-size: var(--type-title-medium-size);
|
|
145
|
+
line-height: var(--type-title-medium-line-height);
|
|
146
|
+
font-weight: var(--type-title-medium-weight);
|
|
147
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
148
|
+
font-variant-numeric: tabular-nums;
|
|
149
|
+
}
|
|
150
|
+
.block-step-body {
|
|
151
|
+
padding-top: 0.5rem;
|
|
152
|
+
}
|
|
153
|
+
.block-step-title {
|
|
154
|
+
font-size: var(--type-title-large-size);
|
|
155
|
+
line-height: var(--type-title-large-line-height);
|
|
156
|
+
font-weight: var(--type-title-large-weight);
|
|
157
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
158
|
+
}
|
|
159
|
+
.block-step-text {
|
|
160
|
+
margin-top: 0.375rem;
|
|
161
|
+
max-width: 50ch;
|
|
162
|
+
color: var(--block-muted);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* "Spørgsmål og svar": rows that fold out, one open at a time (faq/Accordion.tsx). */
|
|
166
|
+
.block-accordion {
|
|
167
|
+
max-width: 48rem;
|
|
168
|
+
border-radius: var(--block-radius);
|
|
169
|
+
background: var(--block-surface);
|
|
170
|
+
box-shadow: var(--block-shadow);
|
|
171
|
+
}
|
|
172
|
+
.block-accordion > :not(:last-child) {
|
|
173
|
+
border-bottom: 1px solid var(--block-line);
|
|
174
|
+
}
|
|
175
|
+
.block-accordion-label {
|
|
176
|
+
display: flex;
|
|
177
|
+
min-height: 3.5rem;
|
|
178
|
+
align-items: center;
|
|
179
|
+
justify-content: space-between;
|
|
180
|
+
gap: 1rem;
|
|
181
|
+
padding: 0.875rem 1.25rem;
|
|
182
|
+
font-size: var(--type-title-medium-size);
|
|
183
|
+
line-height: var(--type-title-medium-line-height);
|
|
184
|
+
font-weight: var(--type-title-medium-weight);
|
|
185
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
186
|
+
transition: color var(--motion-effects);
|
|
187
|
+
}
|
|
188
|
+
summary.block-accordion-label {
|
|
189
|
+
cursor: pointer;
|
|
190
|
+
list-style: none;
|
|
191
|
+
/* The focus ring sits inside the row, so the panel's rounded edge never cuts it off. */
|
|
192
|
+
outline-offset: -3px;
|
|
193
|
+
}
|
|
194
|
+
summary.block-accordion-label::-webkit-details-marker {
|
|
195
|
+
display: none;
|
|
196
|
+
}
|
|
197
|
+
.block-accordion-icon {
|
|
198
|
+
flex-shrink: 0;
|
|
199
|
+
color: var(--block-muted);
|
|
200
|
+
transition: rotate var(--motion-spatial);
|
|
201
|
+
}
|
|
202
|
+
@media (hover: hover) {
|
|
203
|
+
summary.block-accordion-label:hover {
|
|
204
|
+
color: var(--block-accent);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
.block-accordion-row[open] > .block-accordion-label {
|
|
208
|
+
color: var(--block-accent);
|
|
209
|
+
}
|
|
210
|
+
.block-accordion-row[open] .block-accordion-icon {
|
|
211
|
+
rotate: 180deg;
|
|
212
|
+
color: var(--block-accent);
|
|
213
|
+
}
|
|
214
|
+
.block-accordion-body {
|
|
215
|
+
padding: 0 1.25rem 1.5rem;
|
|
216
|
+
}
|
|
217
|
+
/* An answer as it was written: paragraphs and lists apart, links in the accent. */
|
|
218
|
+
.block-accordion-answer {
|
|
219
|
+
max-width: 60ch;
|
|
220
|
+
font-size: var(--type-body-large-size);
|
|
221
|
+
line-height: var(--type-body-large-line-height);
|
|
222
|
+
font-weight: var(--type-body-large-weight);
|
|
223
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
224
|
+
color: var(--block-muted);
|
|
225
|
+
}
|
|
226
|
+
.block-accordion-answer * + * {
|
|
227
|
+
margin-top: 0.75em;
|
|
228
|
+
}
|
|
229
|
+
.block-accordion-answer ul {
|
|
230
|
+
list-style: disc;
|
|
231
|
+
padding-left: 1.25em;
|
|
232
|
+
}
|
|
233
|
+
.block-accordion-answer ol {
|
|
234
|
+
list-style: decimal;
|
|
235
|
+
padding-left: 1.25em;
|
|
236
|
+
}
|
|
237
|
+
.block-accordion-answer li + li {
|
|
238
|
+
margin-top: 0.25em;
|
|
239
|
+
}
|
|
240
|
+
.block-accordion-answer strong {
|
|
241
|
+
color: var(--block-text);
|
|
242
|
+
font-weight: 600;
|
|
243
|
+
}
|
|
244
|
+
.block-accordion-answer a {
|
|
245
|
+
color: var(--block-accent);
|
|
246
|
+
font-weight: 500;
|
|
247
|
+
text-decoration: underline;
|
|
248
|
+
text-decoration-thickness: 1px;
|
|
249
|
+
text-underline-offset: 0.25em;
|
|
250
|
+
}
|
|
251
|
+
/* "Hero" (hero/): its heading, the subtitle (the first paragraph, larger) and the introduction, the buttons, a text
|
|
252
|
+
under them and a quote, beside the picture on a computer, under it on a phone. */
|
|
253
|
+
.block-hero {
|
|
254
|
+
display: grid;
|
|
255
|
+
gap: 2rem;
|
|
256
|
+
align-items: center;
|
|
257
|
+
}
|
|
258
|
+
.block-hero-title {
|
|
259
|
+
margin: 0 0 1.25rem;
|
|
260
|
+
font-size: var(--type-display-small-size);
|
|
261
|
+
line-height: var(--type-display-small-line-height);
|
|
262
|
+
font-weight: var(--type-display-small-weight);
|
|
263
|
+
letter-spacing: var(--type-display-small-tracking);
|
|
264
|
+
}
|
|
265
|
+
.block-hero-text > :first-child {
|
|
266
|
+
font-size: var(--type-title-large-size);
|
|
267
|
+
line-height: var(--type-title-large-line-height);
|
|
268
|
+
font-weight: var(--type-title-large-weight);
|
|
269
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
270
|
+
}
|
|
271
|
+
.block-hero-text > * + * {
|
|
272
|
+
margin-top: 1rem;
|
|
273
|
+
color: var(--block-muted);
|
|
274
|
+
}
|
|
275
|
+
.block-hero-body > .block-buttons {
|
|
276
|
+
margin-top: 2rem;
|
|
277
|
+
}
|
|
278
|
+
.block-hero-note {
|
|
279
|
+
margin-top: 1rem;
|
|
280
|
+
max-width: 44ch;
|
|
281
|
+
font-size: var(--type-body-medium-size);
|
|
282
|
+
line-height: var(--type-body-medium-line-height);
|
|
283
|
+
font-weight: var(--type-body-medium-weight);
|
|
284
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
285
|
+
color: var(--block-muted);
|
|
286
|
+
}
|
|
287
|
+
.block-hero-note > * + * {
|
|
288
|
+
margin-top: 0.5rem;
|
|
289
|
+
}
|
|
290
|
+
/* A quote in the text under the buttons ("> …"): larger, in the text's colour, along a line in the accent; its last
|
|
291
|
+
paragraph, when it has more than one, is who said it (with a link to the whole of it). */
|
|
292
|
+
.block-hero-note > blockquote {
|
|
293
|
+
margin: 2rem 0 0;
|
|
294
|
+
border-left: 2px solid var(--block-accent);
|
|
295
|
+
padding-left: 1rem;
|
|
296
|
+
}
|
|
297
|
+
.block-hero-note > blockquote > p {
|
|
298
|
+
margin: 0;
|
|
299
|
+
font-size: var(--type-body-large-size);
|
|
300
|
+
line-height: var(--type-body-large-line-height);
|
|
301
|
+
font-weight: var(--type-body-large-weight);
|
|
302
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
303
|
+
color: var(--block-text);
|
|
304
|
+
}
|
|
305
|
+
.block-hero-note > blockquote > p:last-child:not(:first-child) {
|
|
306
|
+
margin-top: 0.5rem;
|
|
307
|
+
font-size: var(--type-body-medium-size);
|
|
308
|
+
line-height: var(--type-body-medium-line-height);
|
|
309
|
+
font-weight: var(--type-body-medium-weight);
|
|
310
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
311
|
+
color: var(--block-muted);
|
|
312
|
+
}
|
|
313
|
+
.block-hero-picture {
|
|
314
|
+
display: block;
|
|
315
|
+
width: 100%;
|
|
316
|
+
height: auto;
|
|
317
|
+
aspect-ratio: 4 / 5;
|
|
318
|
+
object-fit: cover;
|
|
319
|
+
object-position: 50% 22%;
|
|
320
|
+
border-radius: var(--block-radius);
|
|
321
|
+
}
|
|
322
|
+
/* The picture behind the text ("Hero", `placement` 'behind'): it fills a panel, darkened from below (--block-hero-shade,
|
|
323
|
+
the text's colour unless the theme sets it) so the text on it (--block-hero-on-shade, the surface's) can be read. */
|
|
324
|
+
.block-hero-behind {
|
|
325
|
+
position: relative;
|
|
326
|
+
isolation: isolate;
|
|
327
|
+
display: flex;
|
|
328
|
+
min-height: 26rem;
|
|
329
|
+
flex-direction: column;
|
|
330
|
+
align-items: stretch;
|
|
331
|
+
justify-content: flex-end;
|
|
332
|
+
overflow: hidden;
|
|
333
|
+
border-radius: var(--block-radius);
|
|
334
|
+
padding: 2rem 1.5rem;
|
|
335
|
+
color: var(--block-hero-on-shade, var(--block-surface));
|
|
336
|
+
}
|
|
337
|
+
.block-hero-behind::before {
|
|
338
|
+
content: '';
|
|
339
|
+
position: absolute;
|
|
340
|
+
inset: 0;
|
|
341
|
+
z-index: -1;
|
|
342
|
+
background: linear-gradient(
|
|
343
|
+
to top,
|
|
344
|
+
color-mix(in srgb, var(--block-hero-shade, var(--block-text)) 85%, transparent),
|
|
345
|
+
color-mix(in srgb, var(--block-hero-shade, var(--block-text)) 35%, transparent) 70%,
|
|
346
|
+
color-mix(in srgb, var(--block-hero-shade, var(--block-text)) 20%, transparent)
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
.block-hero-behind > .block-hero-picture {
|
|
350
|
+
position: absolute;
|
|
351
|
+
inset: 0;
|
|
352
|
+
z-index: -2;
|
|
353
|
+
height: 100%;
|
|
354
|
+
aspect-ratio: auto;
|
|
355
|
+
border-radius: 0;
|
|
356
|
+
}
|
|
357
|
+
.block-hero-behind .block-hero-text > * + *,
|
|
358
|
+
.block-hero-behind .block-hero-note,
|
|
359
|
+
.block-hero-behind .block-hero-note > blockquote > p:last-child:not(:first-child) {
|
|
360
|
+
color: color-mix(in srgb, var(--block-hero-on-shade, var(--block-surface)) 85%, transparent);
|
|
361
|
+
}
|
|
362
|
+
.block-hero-behind .block-hero-note > blockquote {
|
|
363
|
+
border-left-color: currentColor;
|
|
364
|
+
}
|
|
365
|
+
.block-hero-behind .block-hero-note > blockquote > p {
|
|
366
|
+
color: var(--block-hero-on-shade, var(--block-surface));
|
|
367
|
+
}
|
|
368
|
+
.block-hero-behind :is(.block-link, .block-hero-note a) {
|
|
369
|
+
color: inherit;
|
|
370
|
+
}
|
|
371
|
+
/* Across the whole width of the window ("Banner", `width` 'full'): without corners, and without a picture behind it on
|
|
372
|
+
a band in the tint, its content in a readable width. On the site (in the text, .block-in-text) it reaches out of
|
|
373
|
+
the text to the window's edges, from where the text starts at the left of the page's container (--block-page-width,
|
|
374
|
+
--block-gutter), and its content starts there again and ends at the container's right edge; the page is clipped at
|
|
375
|
+
the window's edges while it has one (100vw is a scrollbar wider). In the editor it is as wide as where it is drawn. */
|
|
376
|
+
.block-hero.block-hero-full {
|
|
377
|
+
border-radius: 0;
|
|
378
|
+
}
|
|
379
|
+
:where(.block-hero-full:not(.block-hero-behind)) {
|
|
380
|
+
background: var(--block-tint);
|
|
381
|
+
padding: 2.5rem 1.5rem;
|
|
382
|
+
}
|
|
383
|
+
:where(.block-hero-full) > .block-hero-body {
|
|
384
|
+
max-width: 44rem;
|
|
385
|
+
}
|
|
386
|
+
.block-hero-full.block-in-text {
|
|
387
|
+
--block-hero-inset: calc(max(0px, (100vw - var(--block-page-width)) / 2) + var(--block-gutter));
|
|
388
|
+
width: 100vw;
|
|
389
|
+
max-width: none;
|
|
390
|
+
margin-left: calc(-1 * var(--block-hero-inset));
|
|
391
|
+
padding-inline: var(--block-hero-inset);
|
|
392
|
+
}
|
|
393
|
+
body:has(.block-hero-full.block-in-text) {
|
|
394
|
+
overflow-x: clip;
|
|
395
|
+
}
|
|
396
|
+
@media (min-width: 48rem) {
|
|
397
|
+
.block-hero {
|
|
398
|
+
grid-template-columns: 7fr 5fr;
|
|
399
|
+
gap: 3rem;
|
|
400
|
+
}
|
|
401
|
+
.block-hero-behind {
|
|
402
|
+
min-height: 32rem;
|
|
403
|
+
padding: 3.5rem;
|
|
404
|
+
}
|
|
405
|
+
:where(.block-hero-full:not(.block-hero-behind)) {
|
|
406
|
+
padding: 4rem 3.5rem;
|
|
407
|
+
}
|
|
408
|
+
.block-hero-title {
|
|
409
|
+
font-size: var(--type-display-medium-size);
|
|
410
|
+
line-height: var(--type-display-medium-line-height);
|
|
411
|
+
font-weight: var(--type-display-medium-weight);
|
|
412
|
+
letter-spacing: var(--type-display-medium-tracking);
|
|
413
|
+
}
|
|
414
|
+
.block-hero-body > .block-buttons {
|
|
415
|
+
flex-direction: row;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/* "Knapper": buttons in a row, on a phone under each other in the full width (buttons/). The buttons are the
|
|
420
|
+
theme's (.button in ui.css), each of the kind it was given. */
|
|
421
|
+
.block-buttons {
|
|
422
|
+
display: flex;
|
|
423
|
+
flex-direction: column;
|
|
424
|
+
gap: 0.75rem;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/* A form in a block or a pop-up (an app's: Mailchimp's signup): its fields (the theme's text fields, .text-field in
|
|
428
|
+
ui.css) and its button side by side, wrapping on a phone, and the answer under it. */
|
|
429
|
+
.block-form {
|
|
430
|
+
display: flex;
|
|
431
|
+
flex-wrap: wrap;
|
|
432
|
+
gap: 0.75rem;
|
|
433
|
+
margin-top: 1.5rem;
|
|
434
|
+
}
|
|
435
|
+
.block-form > .button {
|
|
436
|
+
flex: 1 0 auto;
|
|
437
|
+
}
|
|
438
|
+
.block-form > .text-field {
|
|
439
|
+
flex: 1 1 12rem;
|
|
440
|
+
}
|
|
441
|
+
/* The answer to a form, in the accent when it went wrong (data-failed). */
|
|
442
|
+
.block-message {
|
|
443
|
+
margin-top: 1rem;
|
|
444
|
+
}
|
|
445
|
+
.block-message[data-failed] {
|
|
446
|
+
color: var(--block-accent);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/* A link in a block's text (and in the text under a banner's buttons): in the accent, underlined, thicker when
|
|
450
|
+
pointed at. */
|
|
451
|
+
.block-link,
|
|
452
|
+
.block-hero-note a {
|
|
453
|
+
color: var(--block-accent);
|
|
454
|
+
font-weight: 500;
|
|
455
|
+
text-decoration: underline;
|
|
456
|
+
text-decoration-thickness: 1px;
|
|
457
|
+
text-underline-offset: 0.25em;
|
|
458
|
+
}
|
|
459
|
+
.block-link:hover,
|
|
460
|
+
.block-hero-note a:hover {
|
|
461
|
+
text-decoration-thickness: 2px;
|
|
462
|
+
}
|
|
463
|
+
/* A link on its own line with an arrow after it ("Alle indlæg →"). */
|
|
464
|
+
.block-arrow-link {
|
|
465
|
+
display: inline-flex;
|
|
466
|
+
align-items: center;
|
|
467
|
+
gap: 0.5rem;
|
|
468
|
+
font-weight: 500;
|
|
469
|
+
color: var(--block-accent);
|
|
470
|
+
text-decoration: none;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/* "Blogindlæg": its posts as the blog shows them (the theme's PostList.tsx and BlogPosts.tsx), "Alle indlæg" under
|
|
474
|
+
them. */
|
|
475
|
+
.block-posts-in-text.block-in-text {
|
|
476
|
+
margin-block: 2.5rem;
|
|
477
|
+
}
|
|
478
|
+
.block-posts-all {
|
|
479
|
+
margin-top: 1.5rem;
|
|
480
|
+
}
|
|
481
|
+
/* In the editor's drawing: random posts, of how many; under all of them, how many more there are. */
|
|
482
|
+
.block-posts-note {
|
|
483
|
+
margin: 0 0 1rem;
|
|
484
|
+
font-size: var(--type-body-medium-size);
|
|
485
|
+
line-height: var(--type-body-medium-line-height);
|
|
486
|
+
font-weight: var(--type-body-medium-weight);
|
|
487
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
488
|
+
color: var(--block-muted);
|
|
489
|
+
}
|
|
490
|
+
.block-posts-more {
|
|
491
|
+
margin: 1rem 0 0;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
/* Only for screen readers. */
|
|
495
|
+
.block-sr-only {
|
|
496
|
+
position: absolute;
|
|
497
|
+
width: 1px;
|
|
498
|
+
height: 1px;
|
|
499
|
+
padding: 0;
|
|
500
|
+
margin: -1px;
|
|
501
|
+
overflow: hidden;
|
|
502
|
+
clip-path: inset(50%);
|
|
503
|
+
white-space: nowrap;
|
|
504
|
+
border-width: 0;
|
|
505
|
+
}
|
|
506
|
+
/* In a drawing in the editor, when there is nothing to show. */
|
|
507
|
+
.block-empty {
|
|
508
|
+
border-radius: var(--block-radius);
|
|
509
|
+
background: var(--block-tint);
|
|
510
|
+
padding: 1.5rem;
|
|
511
|
+
color: var(--block-muted);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/* "Udtalelser": testimonials to leaf through (testimonials/Slider.tsx, a carousel: ui.css). */
|
|
515
|
+
.carousel.block-in-text,
|
|
516
|
+
.block-testimonials.block-in-text,
|
|
517
|
+
.block-testimonial.block-in-text {
|
|
518
|
+
margin-block: 2.5rem;
|
|
519
|
+
}
|
|
520
|
+
/* "Udtalelser" one after another (testimonials/List.tsx): two columns where there is room. */
|
|
521
|
+
.block-testimonial-list {
|
|
522
|
+
columns: 2 18rem;
|
|
523
|
+
column-gap: 1rem;
|
|
524
|
+
}
|
|
525
|
+
.block-testimonial-list > * {
|
|
526
|
+
break-inside: avoid;
|
|
527
|
+
margin-bottom: 1rem;
|
|
528
|
+
}
|
|
529
|
+
/* Filter chips (the theme's Chip, ui.css) that filter what is under them ("Udtalelser" under hinanden). */
|
|
530
|
+
.block-filters {
|
|
531
|
+
display: flex;
|
|
532
|
+
flex-wrap: wrap;
|
|
533
|
+
gap: 0.5rem;
|
|
534
|
+
margin-bottom: 1.5rem;
|
|
535
|
+
}
|
|
536
|
+
.block-filters[hidden] {
|
|
537
|
+
display: none;
|
|
538
|
+
}
|
|
539
|
+
/* One testimonial (testimonials/Testimonial.tsx), an outlined card (.card in ui.css): a big quotation mark, its tags,
|
|
540
|
+
the text (cut after seven lines with "Læs mere", or two with a link to the whole text) and the name. */
|
|
541
|
+
.block-testimonial {
|
|
542
|
+
display: flex;
|
|
543
|
+
width: 100%;
|
|
544
|
+
flex-direction: column;
|
|
545
|
+
margin: 0;
|
|
546
|
+
}
|
|
547
|
+
.block-testimonial-head {
|
|
548
|
+
display: flex;
|
|
549
|
+
align-items: flex-start;
|
|
550
|
+
justify-content: space-between;
|
|
551
|
+
gap: 1rem;
|
|
552
|
+
}
|
|
553
|
+
.block-testimonial-quote-mark {
|
|
554
|
+
display: block;
|
|
555
|
+
height: 2.5rem;
|
|
556
|
+
margin-bottom: -1rem;
|
|
557
|
+
font-size: var(--type-display-large-size);
|
|
558
|
+
line-height: var(--type-display-large-line-height);
|
|
559
|
+
font-weight: var(--type-display-large-weight);
|
|
560
|
+
letter-spacing: var(--type-display-large-tracking);
|
|
561
|
+
color: var(--block-accent);
|
|
562
|
+
}
|
|
563
|
+
.block-testimonial-tags {
|
|
564
|
+
display: flex;
|
|
565
|
+
flex-wrap: wrap;
|
|
566
|
+
justify-content: flex-end;
|
|
567
|
+
gap: 0.5rem;
|
|
568
|
+
}
|
|
569
|
+
.block-testimonial-tags .chip {
|
|
570
|
+
font-size: var(--type-label-large-size);
|
|
571
|
+
line-height: var(--type-label-large-line-height);
|
|
572
|
+
font-weight: var(--type-label-large-weight);
|
|
573
|
+
letter-spacing: var(--type-label-large-tracking);
|
|
574
|
+
}
|
|
575
|
+
.block-testimonial-text {
|
|
576
|
+
margin: 0.75rem 0 0;
|
|
577
|
+
font-size: var(--type-body-large-size);
|
|
578
|
+
line-height: var(--type-body-large-line-height);
|
|
579
|
+
font-weight: var(--type-body-large-weight);
|
|
580
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
581
|
+
}
|
|
582
|
+
.block-testimonial-text > * {
|
|
583
|
+
margin: 0;
|
|
584
|
+
}
|
|
585
|
+
.block-testimonial-text > :not(:last-child) {
|
|
586
|
+
margin-bottom: 0.75rem;
|
|
587
|
+
}
|
|
588
|
+
.block-testimonial-context {
|
|
589
|
+
color: var(--block-muted);
|
|
590
|
+
}
|
|
591
|
+
.block-testimonial-short {
|
|
592
|
+
display: -webkit-box;
|
|
593
|
+
overflow: hidden;
|
|
594
|
+
-webkit-box-orient: vertical;
|
|
595
|
+
-webkit-line-clamp: 2;
|
|
596
|
+
}
|
|
597
|
+
.block-testimonial-more {
|
|
598
|
+
position: relative;
|
|
599
|
+
display: inline-flex;
|
|
600
|
+
align-self: flex-start;
|
|
601
|
+
align-items: center;
|
|
602
|
+
gap: 0.375rem;
|
|
603
|
+
margin-top: 0.75rem;
|
|
604
|
+
border: 0;
|
|
605
|
+
padding: 0;
|
|
606
|
+
background: none;
|
|
607
|
+
font: inherit;
|
|
608
|
+
font-size: var(--type-label-large-size);
|
|
609
|
+
line-height: var(--type-label-large-line-height);
|
|
610
|
+
font-weight: var(--type-label-large-weight);
|
|
611
|
+
letter-spacing: var(--type-label-large-tracking);
|
|
612
|
+
color: var(--block-accent);
|
|
613
|
+
text-decoration: none;
|
|
614
|
+
}
|
|
615
|
+
.block-testimonial-more[hidden] {
|
|
616
|
+
display: none;
|
|
617
|
+
}
|
|
618
|
+
.block-testimonial-more svg {
|
|
619
|
+
transition: transform var(--motion-spatial);
|
|
620
|
+
}
|
|
621
|
+
.block-testimonial-more[aria-expanded='true'] svg {
|
|
622
|
+
transform: rotate(180deg);
|
|
623
|
+
}
|
|
624
|
+
.block-testimonial-name {
|
|
625
|
+
display: flex;
|
|
626
|
+
align-items: center;
|
|
627
|
+
gap: 0.75rem;
|
|
628
|
+
margin-top: auto;
|
|
629
|
+
padding-top: 1.5rem;
|
|
630
|
+
font-weight: 500;
|
|
631
|
+
}
|
|
632
|
+
.block-testimonial-mark {
|
|
633
|
+
display: none;
|
|
634
|
+
}
|
|
635
|
+
/* A testimonial's picture before the name: small and round. */
|
|
636
|
+
.block-testimonial-picture {
|
|
637
|
+
width: 2.5rem;
|
|
638
|
+
height: 2.5rem;
|
|
639
|
+
flex-shrink: 0;
|
|
640
|
+
border-radius: 9999px;
|
|
641
|
+
object-fit: cover;
|
|
642
|
+
}
|
|
643
|
+
.js [data-clamp] {
|
|
644
|
+
max-height: calc(1.625em * 7);
|
|
645
|
+
overflow: hidden;
|
|
646
|
+
}
|
|
647
|
+
.js [data-clamp][data-overflow] {
|
|
648
|
+
mask-image: linear-gradient(to bottom, #000 55%, transparent);
|
|
649
|
+
}
|
|
650
|
+
.js [data-clamp][data-open] {
|
|
651
|
+
max-height: none;
|
|
652
|
+
mask-image: none;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
/* "Accordion": a row's text, the link to its page and links to more specific pages under it
|
|
656
|
+
(accordion/PageRow.tsx). */
|
|
657
|
+
.block-row-text {
|
|
658
|
+
max-width: 60ch;
|
|
659
|
+
font-size: var(--type-body-large-size);
|
|
660
|
+
line-height: var(--type-body-large-line-height);
|
|
661
|
+
font-weight: var(--type-body-large-weight);
|
|
662
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
663
|
+
color: var(--block-muted);
|
|
664
|
+
}
|
|
665
|
+
.block-row-links {
|
|
666
|
+
display: flex;
|
|
667
|
+
flex-wrap: wrap;
|
|
668
|
+
align-items: center;
|
|
669
|
+
gap: 0.75rem 1.5rem;
|
|
670
|
+
margin-top: 1rem;
|
|
671
|
+
}
|
|
672
|
+
.block-row-link {
|
|
673
|
+
display: inline-flex;
|
|
674
|
+
min-height: 2.75rem;
|
|
675
|
+
align-items: center;
|
|
676
|
+
gap: 0.5rem;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
/* "Kort": outlined cards (.card in ui.css) that link to other pages, with an icon, a picture or nothing at the top,
|
|
680
|
+
two side by side from small screens (cards/LinkCards.tsx). */
|
|
681
|
+
.block-cards {
|
|
682
|
+
display: grid;
|
|
683
|
+
gap: 1rem;
|
|
684
|
+
padding: 0;
|
|
685
|
+
list-style: none;
|
|
686
|
+
}
|
|
687
|
+
.block-card {
|
|
688
|
+
display: flex;
|
|
689
|
+
height: 100%;
|
|
690
|
+
flex-direction: column;
|
|
691
|
+
/* Its edge a border in the outlined card's line, so a picture at the top stays inside it. */
|
|
692
|
+
border: 1px solid var(--card-outlined-line, var(--block-line));
|
|
693
|
+
/* The card's shadow as it is now (ui.css: at rest, pointed at, dragged), without its line. */
|
|
694
|
+
box-shadow: var(--card-shadow, 0 0 #0000);
|
|
695
|
+
color: inherit;
|
|
696
|
+
/* The same with a page (a link, as the site has links) and without one (not a link). */
|
|
697
|
+
font-weight: 500;
|
|
698
|
+
text-decoration: none;
|
|
699
|
+
transition:
|
|
700
|
+
border-color var(--motion-effects),
|
|
701
|
+
box-shadow var(--motion-effects);
|
|
702
|
+
}
|
|
703
|
+
.block-card-icon {
|
|
704
|
+
color: var(--block-accent);
|
|
705
|
+
}
|
|
706
|
+
/* The picture fills the top of the card, out to its edges. */
|
|
707
|
+
.block-card-picture {
|
|
708
|
+
display: block;
|
|
709
|
+
margin: -1.5rem -1.5rem 0.25rem;
|
|
710
|
+
overflow: hidden;
|
|
711
|
+
border-radius: calc(var(--card-radius, var(--block-radius)) - 1px) calc(var(--card-radius, var(--block-radius)) - 1px) 0 0;
|
|
712
|
+
background: var(--block-tint);
|
|
713
|
+
aspect-ratio: 3 / 2;
|
|
714
|
+
}
|
|
715
|
+
.block-card-picture img {
|
|
716
|
+
display: block;
|
|
717
|
+
width: 100%;
|
|
718
|
+
height: 100%;
|
|
719
|
+
object-fit: cover;
|
|
720
|
+
transition: scale var(--motion-spatial-slow);
|
|
721
|
+
}
|
|
722
|
+
.block-card-title {
|
|
723
|
+
margin-top: 1rem;
|
|
724
|
+
font-size: var(--type-title-large-size);
|
|
725
|
+
line-height: var(--type-title-large-line-height);
|
|
726
|
+
font-weight: var(--type-title-large-weight);
|
|
727
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
728
|
+
}
|
|
729
|
+
/* Only text: the heading at the top. */
|
|
730
|
+
.block-card-title:first-child {
|
|
731
|
+
margin-top: 0;
|
|
732
|
+
}
|
|
733
|
+
.block-card-text {
|
|
734
|
+
margin-top: 0.375rem;
|
|
735
|
+
color: var(--block-muted);
|
|
736
|
+
}
|
|
737
|
+
.block-card-more {
|
|
738
|
+
display: inline-flex;
|
|
739
|
+
margin-top: auto;
|
|
740
|
+
align-items: center;
|
|
741
|
+
gap: 0.5rem;
|
|
742
|
+
padding-top: 1.25rem;
|
|
743
|
+
font-weight: 500;
|
|
744
|
+
color: var(--block-accent);
|
|
745
|
+
}
|
|
746
|
+
.block-card-arrow {
|
|
747
|
+
transition: translate var(--motion-spatial);
|
|
748
|
+
}
|
|
749
|
+
/* The cards on the accent ("Kort", `background`): the whole card in it, its text and icon in the colour that is read
|
|
750
|
+
on it. */
|
|
751
|
+
.block-cards-accent .block-card {
|
|
752
|
+
--card-outlined-surface: var(--block-accent);
|
|
753
|
+
--card-outlined-line: transparent;
|
|
754
|
+
color: var(--block-on-accent);
|
|
755
|
+
}
|
|
756
|
+
.block-cards-accent :is(.block-card-icon, .block-card-text, .block-card-more) {
|
|
757
|
+
color: var(--block-on-accent);
|
|
758
|
+
}
|
|
759
|
+
/* A panel (Panel.tsx): an outlined card (.card in ui.css) for a block that is one box (e.g. an app's about
|
|
760
|
+
or price block), with an icon, a heading and a text at the top, and parts under a line. */
|
|
761
|
+
.block-panel {
|
|
762
|
+
color: var(--block-text);
|
|
763
|
+
}
|
|
764
|
+
.block-panel.block-in-text + .block-panel.block-in-text {
|
|
765
|
+
margin-top: 1rem;
|
|
766
|
+
}
|
|
767
|
+
.block-panel-icon {
|
|
768
|
+
display: block;
|
|
769
|
+
margin-bottom: 1rem;
|
|
770
|
+
color: var(--block-accent);
|
|
771
|
+
}
|
|
772
|
+
.block-panel-title {
|
|
773
|
+
margin: 0;
|
|
774
|
+
font-size: var(--type-title-large-size);
|
|
775
|
+
line-height: var(--type-title-large-line-height);
|
|
776
|
+
font-weight: var(--type-title-large-weight);
|
|
777
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
778
|
+
}
|
|
779
|
+
.block-panel-text {
|
|
780
|
+
margin-top: 0.4rem;
|
|
781
|
+
color: var(--block-muted);
|
|
782
|
+
}
|
|
783
|
+
.block-panel > .block-arrow-link {
|
|
784
|
+
margin-top: 1rem;
|
|
785
|
+
}
|
|
786
|
+
/* Buttons in a panel, and a link after them (an app's: Calendly's, when the calendar does not show). */
|
|
787
|
+
.block-panel > .block-buttons {
|
|
788
|
+
margin-top: 1.25rem;
|
|
789
|
+
}
|
|
790
|
+
.block-panel > .block-link {
|
|
791
|
+
display: inline-flex;
|
|
792
|
+
align-items: center;
|
|
793
|
+
gap: 0.375rem;
|
|
794
|
+
margin-top: 1.25rem;
|
|
795
|
+
}
|
|
796
|
+
/* Boxes side by side where there is room ("Links", links/LinkGroups.tsx; an app's payment block). */
|
|
797
|
+
.block-panels {
|
|
798
|
+
display: grid;
|
|
799
|
+
/* Two side by side where there is room for 17rem each, never more. */
|
|
800
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, max(17rem, calc(50% - 0.5rem))), 1fr));
|
|
801
|
+
gap: 1rem;
|
|
802
|
+
}
|
|
803
|
+
.block-panels.block-in-text {
|
|
804
|
+
margin-block: 2.5rem;
|
|
805
|
+
}
|
|
806
|
+
/* Boxes with values to copy: side by side only where each has room for its values with their buttons. */
|
|
807
|
+
.block-panels:has(.block-copy-rows) {
|
|
808
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, max(23rem, calc(50% - 0.5rem))), 1fr));
|
|
809
|
+
}
|
|
810
|
+
/* "Links": a box's heading linking to its page, and its pages under it in a list (.list in ui.css). */
|
|
811
|
+
.block-panel-title a {
|
|
812
|
+
color: inherit;
|
|
813
|
+
text-decoration: none;
|
|
814
|
+
}
|
|
815
|
+
.block-panel-title a:hover {
|
|
816
|
+
color: var(--block-accent);
|
|
817
|
+
}
|
|
818
|
+
.block-panel > .list {
|
|
819
|
+
margin-top: 1rem;
|
|
820
|
+
}
|
|
821
|
+
/* "Punkter med ikon": a list without dividers (.list in ui.css, points/PointList.tsx), its items side by side where
|
|
822
|
+
there is room for 16rem each. Nothing in it is tapped, so its icons start where the text around it does. */
|
|
823
|
+
.block-points {
|
|
824
|
+
--list-item-padding-inline: 0;
|
|
825
|
+
display: grid;
|
|
826
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
|
|
827
|
+
column-gap: 1.5rem;
|
|
828
|
+
}
|
|
829
|
+
.block-points.block-in-text {
|
|
830
|
+
margin-block: 1.5rem;
|
|
831
|
+
}
|
|
832
|
+
/* A check's text is its headline alone and can run over more lines, so it starts at the top and the check stands
|
|
833
|
+
by its first line. */
|
|
834
|
+
.block-checklist .list-item-container {
|
|
835
|
+
align-items: flex-start;
|
|
836
|
+
}
|
|
837
|
+
.block-checklist .list-item-leading {
|
|
838
|
+
max-height: var(--list-item-headline-line-height, 1lh);
|
|
839
|
+
}
|
|
840
|
+
/* A picture with a heading, a text and buttons, beside it where there is room for 22rem each, else under it
|
|
841
|
+
(e.g. an app's address block). */
|
|
842
|
+
.block-media {
|
|
843
|
+
display: grid;
|
|
844
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
|
|
845
|
+
align-items: center;
|
|
846
|
+
gap: 1.5rem 3rem;
|
|
847
|
+
}
|
|
848
|
+
.block-media-picture {
|
|
849
|
+
display: block;
|
|
850
|
+
width: 100%;
|
|
851
|
+
aspect-ratio: 4 / 3;
|
|
852
|
+
border-radius: var(--block-radius);
|
|
853
|
+
object-fit: cover;
|
|
854
|
+
}
|
|
855
|
+
.block-media-title {
|
|
856
|
+
margin: 0;
|
|
857
|
+
font-size: var(--type-headline-small-size);
|
|
858
|
+
line-height: var(--type-headline-small-line-height);
|
|
859
|
+
font-weight: var(--type-headline-small-weight);
|
|
860
|
+
letter-spacing: var(--type-headline-small-tracking);
|
|
861
|
+
}
|
|
862
|
+
.block-media-text {
|
|
863
|
+
margin: 1rem 0 0;
|
|
864
|
+
font-style: normal;
|
|
865
|
+
font-size: var(--type-body-large-size);
|
|
866
|
+
line-height: var(--type-body-large-line-height);
|
|
867
|
+
font-weight: var(--type-body-large-weight);
|
|
868
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
869
|
+
}
|
|
870
|
+
.block-media-body > .block-buttons {
|
|
871
|
+
margin-top: 1.5rem;
|
|
872
|
+
}
|
|
873
|
+
/* Values that can be copied, each with its name before it and a button after it (e.g. an app's payment block). */
|
|
874
|
+
.block-copy-rows {
|
|
875
|
+
display: grid;
|
|
876
|
+
grid-template-columns: auto 1fr auto;
|
|
877
|
+
align-items: center;
|
|
878
|
+
gap: 0.75rem 1rem;
|
|
879
|
+
margin: 0;
|
|
880
|
+
}
|
|
881
|
+
.block-copy-rows dt {
|
|
882
|
+
color: var(--block-muted);
|
|
883
|
+
}
|
|
884
|
+
.block-copy-rows dd {
|
|
885
|
+
margin: 0;
|
|
886
|
+
}
|
|
887
|
+
/* In a narrow box the button goes under its value. */
|
|
888
|
+
.block-panel:has(> .block-copy-rows) {
|
|
889
|
+
container-type: inline-size;
|
|
890
|
+
}
|
|
891
|
+
@container (width < 18.5rem) {
|
|
892
|
+
.block-copy-rows {
|
|
893
|
+
grid-template-columns: auto 1fr;
|
|
894
|
+
}
|
|
895
|
+
.block-copy-rows dt {
|
|
896
|
+
grid-column: 1;
|
|
897
|
+
}
|
|
898
|
+
.block-copy-rows dd {
|
|
899
|
+
grid-column: 2;
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
.block-copy-value {
|
|
903
|
+
white-space: nowrap;
|
|
904
|
+
font-size: var(--type-headline-small-size);
|
|
905
|
+
line-height: var(--type-headline-small-line-height);
|
|
906
|
+
font-weight: var(--type-headline-small-weight);
|
|
907
|
+
letter-spacing: var(--type-headline-small-tracking);
|
|
908
|
+
font-variant-numeric: tabular-nums;
|
|
909
|
+
}
|
|
910
|
+
.block-panel > .block-buttons-row {
|
|
911
|
+
margin-top: 1.25rem;
|
|
912
|
+
}
|
|
913
|
+
.block-buttons-row {
|
|
914
|
+
display: flex;
|
|
915
|
+
flex-wrap: wrap;
|
|
916
|
+
gap: 0.5rem;
|
|
917
|
+
}
|
|
918
|
+
.block-panel-title > svg {
|
|
919
|
+
display: inline-block;
|
|
920
|
+
margin-right: 0.5rem;
|
|
921
|
+
vertical-align: -0.2em;
|
|
922
|
+
color: var(--block-accent);
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
/* Steps that go from free to the full price, each more coloured than the one before (`--step`, a share of the
|
|
926
|
+
accent over the tint), the last in the accent; across on a wider screen (e.g. an app's cancellation block). */
|
|
927
|
+
.block-timeline {
|
|
928
|
+
display: grid;
|
|
929
|
+
gap: 0.75rem;
|
|
930
|
+
margin: 0;
|
|
931
|
+
padding: 0;
|
|
932
|
+
list-style: none;
|
|
933
|
+
}
|
|
934
|
+
.block-timeline.block-in-text {
|
|
935
|
+
margin-block: 2rem;
|
|
936
|
+
}
|
|
937
|
+
.block-timeline > li {
|
|
938
|
+
display: flex;
|
|
939
|
+
align-items: center;
|
|
940
|
+
justify-content: space-between;
|
|
941
|
+
gap: 1rem;
|
|
942
|
+
border-radius: var(--block-radius-small);
|
|
943
|
+
background: color-mix(in srgb, var(--block-accent) var(--step, 0%), var(--block-tint));
|
|
944
|
+
padding: 1.25rem;
|
|
945
|
+
}
|
|
946
|
+
.block-timeline > li:last-child {
|
|
947
|
+
background: var(--block-accent);
|
|
948
|
+
color: var(--block-on-accent);
|
|
949
|
+
}
|
|
950
|
+
.block-timeline-when {
|
|
951
|
+
font-size: var(--type-body-medium-size);
|
|
952
|
+
line-height: var(--type-body-medium-line-height);
|
|
953
|
+
font-weight: var(--type-body-medium-weight);
|
|
954
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
955
|
+
color: var(--block-muted);
|
|
956
|
+
}
|
|
957
|
+
.block-timeline > li:last-child .block-timeline-when {
|
|
958
|
+
color: inherit;
|
|
959
|
+
opacity: 0.9;
|
|
960
|
+
}
|
|
961
|
+
.block-timeline-value {
|
|
962
|
+
font-size: var(--type-title-large-size);
|
|
963
|
+
line-height: var(--type-title-large-line-height);
|
|
964
|
+
font-weight: var(--type-title-large-weight);
|
|
965
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
966
|
+
}
|
|
967
|
+
@media (width >= 40rem) {
|
|
968
|
+
.block-timeline {
|
|
969
|
+
grid-auto-columns: 1fr;
|
|
970
|
+
grid-auto-flow: column;
|
|
971
|
+
gap: 0;
|
|
972
|
+
}
|
|
973
|
+
.block-timeline > li {
|
|
974
|
+
flex-direction: column;
|
|
975
|
+
align-items: flex-start;
|
|
976
|
+
border-radius: 0;
|
|
977
|
+
padding: 1.5rem;
|
|
978
|
+
}
|
|
979
|
+
.block-timeline > li:first-child {
|
|
980
|
+
border-start-start-radius: var(--block-radius);
|
|
981
|
+
border-end-start-radius: var(--block-radius);
|
|
982
|
+
}
|
|
983
|
+
.block-timeline > li:last-child {
|
|
984
|
+
border-start-end-radius: var(--block-radius);
|
|
985
|
+
border-end-end-radius: var(--block-radius);
|
|
986
|
+
}
|
|
987
|
+
.block-timeline-value {
|
|
988
|
+
margin-top: 1.5rem;
|
|
989
|
+
font-size: var(--type-headline-small-size);
|
|
990
|
+
line-height: var(--type-headline-small-line-height);
|
|
991
|
+
font-weight: var(--type-headline-small-weight);
|
|
992
|
+
letter-spacing: var(--type-headline-small-tracking);
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
/* A part of a panel under a line (over the part's own margin and padding: a list, the facts). */
|
|
997
|
+
.block-panel > .block-panel-part {
|
|
998
|
+
margin-top: 1.25rem;
|
|
999
|
+
border-top: 1px solid var(--block-line);
|
|
1000
|
+
padding-top: 1.25rem;
|
|
1001
|
+
}
|
|
1002
|
+
/* Only on phones and tablets (a block a site shows beside the text on a computer). */
|
|
1003
|
+
@media (width >= 64rem) {
|
|
1004
|
+
.block-small-screens {
|
|
1005
|
+
display: none;
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
/* A person: a small picture beside the name and a title under it. */
|
|
1010
|
+
.block-person {
|
|
1011
|
+
display: flex;
|
|
1012
|
+
align-items: center;
|
|
1013
|
+
gap: 1rem;
|
|
1014
|
+
}
|
|
1015
|
+
.block-person-picture {
|
|
1016
|
+
width: 3.5rem;
|
|
1017
|
+
height: 3.5rem;
|
|
1018
|
+
flex-shrink: 0;
|
|
1019
|
+
border-radius: var(--block-radius-small);
|
|
1020
|
+
object-fit: cover;
|
|
1021
|
+
object-position: 50% 20%;
|
|
1022
|
+
}
|
|
1023
|
+
.block-person-name {
|
|
1024
|
+
display: block;
|
|
1025
|
+
font-size: var(--type-title-medium-size);
|
|
1026
|
+
line-height: var(--type-title-medium-line-height);
|
|
1027
|
+
font-weight: var(--type-title-medium-weight);
|
|
1028
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
1029
|
+
}
|
|
1030
|
+
.block-person-role {
|
|
1031
|
+
display: block;
|
|
1032
|
+
font-size: var(--type-body-medium-size);
|
|
1033
|
+
line-height: var(--type-body-medium-line-height);
|
|
1034
|
+
font-weight: var(--type-body-medium-weight);
|
|
1035
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1036
|
+
color: var(--block-muted);
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
/* A list with an icon in the accent before each line. */
|
|
1040
|
+
.block-icon-list {
|
|
1041
|
+
display: grid;
|
|
1042
|
+
gap: 0.6rem;
|
|
1043
|
+
margin: 0;
|
|
1044
|
+
padding: 0;
|
|
1045
|
+
list-style: none;
|
|
1046
|
+
font-size: var(--type-body-medium-size);
|
|
1047
|
+
line-height: var(--type-body-medium-line-height);
|
|
1048
|
+
font-weight: var(--type-body-medium-weight);
|
|
1049
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1050
|
+
}
|
|
1051
|
+
.block-icon-list > li {
|
|
1052
|
+
display: flex;
|
|
1053
|
+
align-items: flex-start;
|
|
1054
|
+
gap: 0.75rem;
|
|
1055
|
+
}
|
|
1056
|
+
.block-icon-list svg {
|
|
1057
|
+
flex-shrink: 0;
|
|
1058
|
+
margin-top: 0.05rem;
|
|
1059
|
+
color: var(--block-accent);
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
/* Facts side by side, each a quiet name over its value, the last one to the right (a duration and a
|
|
1063
|
+
price). */
|
|
1064
|
+
.block-facts {
|
|
1065
|
+
display: grid;
|
|
1066
|
+
grid-template-columns: 1fr auto;
|
|
1067
|
+
gap: 1rem;
|
|
1068
|
+
margin: 0;
|
|
1069
|
+
}
|
|
1070
|
+
.block-facts dt {
|
|
1071
|
+
font-size: var(--type-body-medium-size);
|
|
1072
|
+
line-height: var(--type-body-medium-line-height);
|
|
1073
|
+
font-weight: var(--type-body-medium-weight);
|
|
1074
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1075
|
+
color: var(--block-muted);
|
|
1076
|
+
}
|
|
1077
|
+
.block-facts dd {
|
|
1078
|
+
margin: 0.15rem 0 0;
|
|
1079
|
+
font-weight: 500;
|
|
1080
|
+
}
|
|
1081
|
+
.block-facts > :last-child {
|
|
1082
|
+
text-align: right;
|
|
1083
|
+
}
|
|
1084
|
+
.block-facts-amount {
|
|
1085
|
+
font-size: var(--type-title-large-size);
|
|
1086
|
+
line-height: var(--type-title-large-line-height);
|
|
1087
|
+
font-weight: var(--type-title-large-weight);
|
|
1088
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
1089
|
+
font-variant-numeric: tabular-nums;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
/* A table: quiet headings over rows with a thin line between them, the first column (each row's name) a little
|
|
1093
|
+
heavier; wider than the screen, it scrolls sideways ("Cookieliste"). */
|
|
1094
|
+
.block-table {
|
|
1095
|
+
overflow-x: auto;
|
|
1096
|
+
}
|
|
1097
|
+
.block-table table {
|
|
1098
|
+
width: 100%;
|
|
1099
|
+
min-width: 40rem;
|
|
1100
|
+
border-collapse: collapse;
|
|
1101
|
+
font-size: var(--type-body-medium-size);
|
|
1102
|
+
line-height: var(--type-body-medium-line-height);
|
|
1103
|
+
font-weight: var(--type-body-medium-weight);
|
|
1104
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1105
|
+
}
|
|
1106
|
+
.block-table :is(th, td) {
|
|
1107
|
+
padding: 0.625rem 1rem 0.625rem 0;
|
|
1108
|
+
border-bottom: 1px solid var(--block-line);
|
|
1109
|
+
text-align: left;
|
|
1110
|
+
vertical-align: top;
|
|
1111
|
+
}
|
|
1112
|
+
.block-table thead th {
|
|
1113
|
+
font-size: var(--type-label-large-size);
|
|
1114
|
+
line-height: var(--type-label-large-line-height);
|
|
1115
|
+
font-weight: var(--type-label-large-weight);
|
|
1116
|
+
letter-spacing: var(--type-label-large-tracking);
|
|
1117
|
+
color: var(--block-muted);
|
|
1118
|
+
}
|
|
1119
|
+
.block-table tbody th {
|
|
1120
|
+
font-weight: 500;
|
|
1121
|
+
white-space: nowrap;
|
|
1122
|
+
}
|
|
1123
|
+
.block-table td:not(:nth-child(3)) {
|
|
1124
|
+
white-space: nowrap;
|
|
1125
|
+
}
|
|
1126
|
+
.block-table td:nth-child(3) {
|
|
1127
|
+
min-width: 14rem;
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
/* A badge: a small word over a number in a light square ("Spar / 10%"), and a text beside one. */
|
|
1131
|
+
.block-badge {
|
|
1132
|
+
display: grid;
|
|
1133
|
+
width: 3.5rem;
|
|
1134
|
+
height: 3.5rem;
|
|
1135
|
+
flex-shrink: 0;
|
|
1136
|
+
place-content: center;
|
|
1137
|
+
border-radius: calc(var(--block-radius-small) - 0.25rem);
|
|
1138
|
+
background: var(--block-tint);
|
|
1139
|
+
color: var(--block-accent);
|
|
1140
|
+
text-align: center;
|
|
1141
|
+
line-height: 1.1;
|
|
1142
|
+
}
|
|
1143
|
+
.block-badge > span {
|
|
1144
|
+
font-size: var(--type-label-small-size);
|
|
1145
|
+
line-height: var(--type-label-small-line-height);
|
|
1146
|
+
font-weight: var(--type-label-small-weight);
|
|
1147
|
+
letter-spacing: var(--type-label-small-tracking);
|
|
1148
|
+
}
|
|
1149
|
+
.block-badge > strong {
|
|
1150
|
+
font-size: var(--type-title-medium-size);
|
|
1151
|
+
line-height: var(--type-title-medium-line-height);
|
|
1152
|
+
font-weight: var(--type-title-medium-weight);
|
|
1153
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
1154
|
+
font-variant-numeric: tabular-nums;
|
|
1155
|
+
}
|
|
1156
|
+
.block-with-badge {
|
|
1157
|
+
display: flex;
|
|
1158
|
+
align-items: flex-start;
|
|
1159
|
+
gap: 1rem;
|
|
1160
|
+
font-size: var(--type-body-medium-size);
|
|
1161
|
+
line-height: var(--type-body-medium-line-height);
|
|
1162
|
+
font-weight: var(--type-body-medium-weight);
|
|
1163
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1164
|
+
}
|
|
1165
|
+
.block-with-badge > p {
|
|
1166
|
+
margin: 0;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
/* A quiet link that is one row, an outlined card (.card in ui.css) with smaller corners: a badge or an icon, a text
|
|
1170
|
+
and an arrow, its edge in the accent when pointed at. */
|
|
1171
|
+
.block-link-row {
|
|
1172
|
+
display: flex;
|
|
1173
|
+
align-items: center;
|
|
1174
|
+
gap: 1rem;
|
|
1175
|
+
--card-radius: var(--block-radius-small);
|
|
1176
|
+
--card-padding: 0.85rem 1.1rem 0.85rem 0.85rem;
|
|
1177
|
+
font-size: var(--type-body-large-size);
|
|
1178
|
+
line-height: var(--type-body-large-line-height);
|
|
1179
|
+
font-weight: var(--type-body-large-weight);
|
|
1180
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
1181
|
+
transition: box-shadow var(--motion-effects);
|
|
1182
|
+
}
|
|
1183
|
+
.block-link-row.block-in-text {
|
|
1184
|
+
margin-block: 1.75rem;
|
|
1185
|
+
}
|
|
1186
|
+
.block-link-row-text {
|
|
1187
|
+
flex: 1;
|
|
1188
|
+
}
|
|
1189
|
+
.block-link-row-arrow {
|
|
1190
|
+
flex-shrink: 0;
|
|
1191
|
+
color: var(--block-accent);
|
|
1192
|
+
transition: transform var(--motion-spatial);
|
|
1193
|
+
}
|
|
1194
|
+
a.block-link-row:hover {
|
|
1195
|
+
--card-outlined-line: var(--block-accent);
|
|
1196
|
+
}
|
|
1197
|
+
a.block-link-row:hover .block-link-row-arrow {
|
|
1198
|
+
transform: translateX(3px);
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
/* An invitation, a filled card (.card in ui.css): a picture, a heading and a text, and buttons under each other
|
|
1202
|
+
(e.g. an app's booking block); on a computer the three side by side. */
|
|
1203
|
+
.block-cta {
|
|
1204
|
+
display: grid;
|
|
1205
|
+
gap: 1.5rem;
|
|
1206
|
+
}
|
|
1207
|
+
.block-cta.block-in-text {
|
|
1208
|
+
margin-block: 2.5rem;
|
|
1209
|
+
}
|
|
1210
|
+
.block-cta-picture {
|
|
1211
|
+
width: 5rem;
|
|
1212
|
+
height: 5rem;
|
|
1213
|
+
border-radius: var(--block-radius-small);
|
|
1214
|
+
object-fit: cover;
|
|
1215
|
+
object-position: 50% 20%;
|
|
1216
|
+
}
|
|
1217
|
+
.block-cta-title {
|
|
1218
|
+
margin: 0;
|
|
1219
|
+
font-size: var(--type-headline-small-size);
|
|
1220
|
+
line-height: var(--type-headline-small-line-height);
|
|
1221
|
+
font-weight: var(--type-headline-small-weight);
|
|
1222
|
+
letter-spacing: var(--type-headline-small-tracking);
|
|
1223
|
+
}
|
|
1224
|
+
.block-cta-text {
|
|
1225
|
+
margin-top: 0.5rem;
|
|
1226
|
+
max-width: 48ch;
|
|
1227
|
+
color: var(--block-muted);
|
|
1228
|
+
}
|
|
1229
|
+
.block-cta-buttons {
|
|
1230
|
+
display: grid;
|
|
1231
|
+
gap: 0.625rem;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
/* Prices: the big ones as cards side by side, and the others as a list, a row each with the name and
|
|
1235
|
+
its details to the left and the price to the right, with a text under it. */
|
|
1236
|
+
.block-prices {
|
|
1237
|
+
display: grid;
|
|
1238
|
+
gap: 1rem;
|
|
1239
|
+
}
|
|
1240
|
+
.block-prices.block-in-text {
|
|
1241
|
+
margin-block: 2.5rem;
|
|
1242
|
+
}
|
|
1243
|
+
.block-price-cards {
|
|
1244
|
+
display: grid;
|
|
1245
|
+
gap: 1rem;
|
|
1246
|
+
}
|
|
1247
|
+
/* A big price, an elevated card (.card in ui.css). */
|
|
1248
|
+
.block-price-card {
|
|
1249
|
+
display: flex;
|
|
1250
|
+
flex-direction: column;
|
|
1251
|
+
}
|
|
1252
|
+
.block-price-card-head {
|
|
1253
|
+
display: flex;
|
|
1254
|
+
align-items: flex-start;
|
|
1255
|
+
justify-content: space-between;
|
|
1256
|
+
gap: 1rem;
|
|
1257
|
+
}
|
|
1258
|
+
.block-price-card-title {
|
|
1259
|
+
margin: 0;
|
|
1260
|
+
font-size: var(--type-headline-small-size);
|
|
1261
|
+
line-height: var(--type-headline-small-line-height);
|
|
1262
|
+
font-weight: var(--type-headline-small-weight);
|
|
1263
|
+
letter-spacing: var(--type-headline-small-tracking);
|
|
1264
|
+
}
|
|
1265
|
+
/* A small fact in a light pill (the duration), its icon in the accent. */
|
|
1266
|
+
.block-tag {
|
|
1267
|
+
display: inline-flex;
|
|
1268
|
+
flex-shrink: 0;
|
|
1269
|
+
align-items: center;
|
|
1270
|
+
gap: 0.375rem;
|
|
1271
|
+
margin-top: 0.25rem;
|
|
1272
|
+
border-radius: var(--block-control-radius);
|
|
1273
|
+
background: var(--block-tint);
|
|
1274
|
+
padding: 0.25rem 0.75rem;
|
|
1275
|
+
font-size: var(--type-label-large-size);
|
|
1276
|
+
line-height: var(--type-label-large-line-height);
|
|
1277
|
+
font-weight: var(--type-label-large-weight);
|
|
1278
|
+
letter-spacing: var(--type-label-large-tracking);
|
|
1279
|
+
}
|
|
1280
|
+
.block-tag svg {
|
|
1281
|
+
color: var(--block-accent);
|
|
1282
|
+
}
|
|
1283
|
+
.block-price-amount {
|
|
1284
|
+
margin-top: 1.5rem;
|
|
1285
|
+
font-size: var(--type-display-medium-size);
|
|
1286
|
+
line-height: var(--type-display-medium-line-height);
|
|
1287
|
+
font-weight: var(--type-display-medium-weight);
|
|
1288
|
+
letter-spacing: var(--type-display-medium-tracking);
|
|
1289
|
+
font-variant-numeric: tabular-nums;
|
|
1290
|
+
}
|
|
1291
|
+
.block-price-unit {
|
|
1292
|
+
margin-top: 0.25rem;
|
|
1293
|
+
color: var(--block-muted);
|
|
1294
|
+
}
|
|
1295
|
+
/* A punch card's offer in a price card, a filled card with smaller corners. */
|
|
1296
|
+
.block-price-extra {
|
|
1297
|
+
margin-top: 1.5rem;
|
|
1298
|
+
--card-radius: var(--block-radius-small);
|
|
1299
|
+
--card-padding: 1rem;
|
|
1300
|
+
}
|
|
1301
|
+
.block-price-extra-title {
|
|
1302
|
+
display: flex;
|
|
1303
|
+
align-items: center;
|
|
1304
|
+
gap: 0.5rem;
|
|
1305
|
+
font-weight: 500;
|
|
1306
|
+
}
|
|
1307
|
+
.block-price-extra-title svg {
|
|
1308
|
+
color: var(--block-accent);
|
|
1309
|
+
}
|
|
1310
|
+
.block-price-extra-text {
|
|
1311
|
+
margin-top: 0.25rem;
|
|
1312
|
+
color: var(--block-muted);
|
|
1313
|
+
}
|
|
1314
|
+
.block-price-extra-text strong {
|
|
1315
|
+
color: var(--block-text);
|
|
1316
|
+
font-weight: 500;
|
|
1317
|
+
font-variant-numeric: tabular-nums;
|
|
1318
|
+
}
|
|
1319
|
+
.block-price-card > .block-arrow-link {
|
|
1320
|
+
align-self: flex-start;
|
|
1321
|
+
margin-top: 1.5rem;
|
|
1322
|
+
}
|
|
1323
|
+
.block-price-list {
|
|
1324
|
+
margin: 0;
|
|
1325
|
+
border: 1px solid var(--block-line);
|
|
1326
|
+
border-radius: var(--block-radius);
|
|
1327
|
+
padding: 0 1.5rem;
|
|
1328
|
+
list-style: none;
|
|
1329
|
+
}
|
|
1330
|
+
.block-price-row {
|
|
1331
|
+
display: grid;
|
|
1332
|
+
gap: 0.25rem 1.5rem;
|
|
1333
|
+
padding-block: 1.25rem;
|
|
1334
|
+
}
|
|
1335
|
+
.block-price-row + .block-price-row {
|
|
1336
|
+
border-top: 1px solid var(--block-line);
|
|
1337
|
+
}
|
|
1338
|
+
.block-price-row-name {
|
|
1339
|
+
font-size: var(--type-title-medium-size);
|
|
1340
|
+
line-height: var(--type-title-medium-line-height);
|
|
1341
|
+
font-weight: var(--type-title-medium-weight);
|
|
1342
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
1343
|
+
color: inherit;
|
|
1344
|
+
text-decoration: none;
|
|
1345
|
+
}
|
|
1346
|
+
a.block-price-row-name:hover {
|
|
1347
|
+
color: var(--block-accent);
|
|
1348
|
+
}
|
|
1349
|
+
.block-price-row-text {
|
|
1350
|
+
font-size: var(--type-body-medium-size);
|
|
1351
|
+
line-height: var(--type-body-medium-line-height);
|
|
1352
|
+
font-weight: var(--type-body-medium-weight);
|
|
1353
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1354
|
+
color: var(--block-muted);
|
|
1355
|
+
}
|
|
1356
|
+
.block-price-row-note {
|
|
1357
|
+
margin-top: 0.25rem;
|
|
1358
|
+
max-width: 60ch;
|
|
1359
|
+
font-size: var(--type-body-medium-size);
|
|
1360
|
+
line-height: var(--type-body-medium-line-height);
|
|
1361
|
+
font-weight: var(--type-body-medium-weight);
|
|
1362
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1363
|
+
color: var(--block-muted);
|
|
1364
|
+
}
|
|
1365
|
+
.block-price-row-price {
|
|
1366
|
+
font-size: var(--type-headline-small-size);
|
|
1367
|
+
line-height: var(--type-headline-small-line-height);
|
|
1368
|
+
font-weight: var(--type-headline-small-weight);
|
|
1369
|
+
letter-spacing: var(--type-headline-small-tracking);
|
|
1370
|
+
font-variant-numeric: tabular-nums;
|
|
1371
|
+
}
|
|
1372
|
+
.block-price-row-price > span {
|
|
1373
|
+
display: block;
|
|
1374
|
+
font-size: var(--type-body-medium-size);
|
|
1375
|
+
line-height: var(--type-body-medium-line-height);
|
|
1376
|
+
font-weight: var(--type-body-medium-weight);
|
|
1377
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1378
|
+
color: var(--block-muted);
|
|
1379
|
+
}
|
|
1380
|
+
/* A quiet text with an icon before it (the terms under the prices). */
|
|
1381
|
+
.block-terms {
|
|
1382
|
+
display: flex;
|
|
1383
|
+
gap: 0.625rem;
|
|
1384
|
+
margin-top: 1rem;
|
|
1385
|
+
max-width: 70ch;
|
|
1386
|
+
font-size: var(--type-body-medium-size);
|
|
1387
|
+
line-height: var(--type-body-medium-line-height);
|
|
1388
|
+
font-weight: var(--type-body-medium-weight);
|
|
1389
|
+
letter-spacing: var(--type-body-medium-tracking);
|
|
1390
|
+
color: var(--block-muted);
|
|
1391
|
+
}
|
|
1392
|
+
.block-terms svg {
|
|
1393
|
+
flex-shrink: 0;
|
|
1394
|
+
margin-top: 0.125rem;
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
@media (hover: hover) {
|
|
1398
|
+
a.block-card:hover {
|
|
1399
|
+
--card-outlined-line: var(--block-accent);
|
|
1400
|
+
}
|
|
1401
|
+
a.block-card:hover .block-card-arrow {
|
|
1402
|
+
translate: 0.25rem 0;
|
|
1403
|
+
}
|
|
1404
|
+
a.block-card:hover .block-card-picture img {
|
|
1405
|
+
scale: 1.03;
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
@media (width >= 40rem) {
|
|
1409
|
+
.block-buttons {
|
|
1410
|
+
flex-direction: row;
|
|
1411
|
+
flex-wrap: wrap;
|
|
1412
|
+
}
|
|
1413
|
+
.block-cards {
|
|
1414
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1415
|
+
}
|
|
1416
|
+
.block-price-row {
|
|
1417
|
+
grid-template-columns: 1fr auto;
|
|
1418
|
+
}
|
|
1419
|
+
.block-price-row-price {
|
|
1420
|
+
text-align: right;
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
@media (width >= 48rem) {
|
|
1424
|
+
.block-testimonial {
|
|
1425
|
+
--card-padding: 1.75rem;
|
|
1426
|
+
}
|
|
1427
|
+
.block-row-text {
|
|
1428
|
+
font-size: var(--type-body-large-size);
|
|
1429
|
+
line-height: var(--type-body-large-line-height);
|
|
1430
|
+
font-weight: var(--type-body-large-weight);
|
|
1431
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
1432
|
+
}
|
|
1433
|
+
.block-notice {
|
|
1434
|
+
padding: 1.25rem 1.5rem;
|
|
1435
|
+
}
|
|
1436
|
+
.block-accordion-label {
|
|
1437
|
+
padding-inline: 2rem;
|
|
1438
|
+
font-size: var(--type-title-medium-size);
|
|
1439
|
+
line-height: var(--type-title-medium-line-height);
|
|
1440
|
+
font-weight: var(--type-title-medium-weight);
|
|
1441
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
1442
|
+
}
|
|
1443
|
+
.block-accordion-body {
|
|
1444
|
+
padding: 0 2rem 2rem;
|
|
1445
|
+
}
|
|
1446
|
+
.block-accordion-answer {
|
|
1447
|
+
font-size: var(--type-body-large-size);
|
|
1448
|
+
line-height: var(--type-body-large-line-height);
|
|
1449
|
+
font-weight: var(--type-body-large-weight);
|
|
1450
|
+
letter-spacing: var(--type-body-large-tracking);
|
|
1451
|
+
}
|
|
1452
|
+
.block-cta {
|
|
1453
|
+
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
1454
|
+
align-items: center;
|
|
1455
|
+
gap: 2.5rem;
|
|
1456
|
+
--card-padding: 3rem;
|
|
1457
|
+
}
|
|
1458
|
+
.block-cta-picture {
|
|
1459
|
+
grid-column: span 2;
|
|
1460
|
+
width: 7rem;
|
|
1461
|
+
height: 7rem;
|
|
1462
|
+
}
|
|
1463
|
+
.block-cta-body {
|
|
1464
|
+
grid-column: span 6;
|
|
1465
|
+
}
|
|
1466
|
+
.block-cta-buttons {
|
|
1467
|
+
grid-column: span 4;
|
|
1468
|
+
}
|
|
1469
|
+
.block-cta-title {
|
|
1470
|
+
font-size: var(--type-headline-medium-size);
|
|
1471
|
+
line-height: var(--type-headline-medium-line-height);
|
|
1472
|
+
font-weight: var(--type-headline-medium-weight);
|
|
1473
|
+
letter-spacing: var(--type-headline-medium-tracking);
|
|
1474
|
+
}
|
|
1475
|
+
.block-prices,
|
|
1476
|
+
.block-price-cards {
|
|
1477
|
+
gap: 1.25rem;
|
|
1478
|
+
}
|
|
1479
|
+
.block-price-cards {
|
|
1480
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1481
|
+
}
|
|
1482
|
+
.block-price-card {
|
|
1483
|
+
--card-padding: 2rem;
|
|
1484
|
+
}
|
|
1485
|
+
.block-price-card-title {
|
|
1486
|
+
font-size: var(--type-headline-medium-size);
|
|
1487
|
+
line-height: var(--type-headline-medium-line-height);
|
|
1488
|
+
font-weight: var(--type-headline-medium-weight);
|
|
1489
|
+
letter-spacing: var(--type-headline-medium-tracking);
|
|
1490
|
+
}
|
|
1491
|
+
.block-price-amount {
|
|
1492
|
+
font-size: var(--type-display-large-size);
|
|
1493
|
+
line-height: var(--type-display-large-line-height);
|
|
1494
|
+
font-weight: var(--type-display-large-weight);
|
|
1495
|
+
letter-spacing: var(--type-display-large-tracking);
|
|
1496
|
+
}
|
|
1497
|
+
.block-price-list {
|
|
1498
|
+
padding-inline: 2rem;
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
/* ---- "Tjekliste" and "Priskort" ---- */
|
|
1502
|
+
|
|
1503
|
+
/* "Tjekliste" (checklist/Checks.tsx), and what is included on a price card: a list without dividers (.list in
|
|
1504
|
+
ui.css), a check before each line; with six or more (not on a card), two columns where there is room for 16rem
|
|
1505
|
+
each, never more. Nothing in it is tapped, so it is spaced as a bulleted or numbered list in the text (half a
|
|
1506
|
+
line between its lines, not the height of a list item one taps), and its checks start where the text around it
|
|
1507
|
+
does. */
|
|
1508
|
+
.block-checklist {
|
|
1509
|
+
--list-item-min-height: auto;
|
|
1510
|
+
--list-item-padding-block: 0.25em;
|
|
1511
|
+
--list-item-padding-inline: 0;
|
|
1512
|
+
}
|
|
1513
|
+
.block-checklist.block-in-text {
|
|
1514
|
+
margin-block: 1rem;
|
|
1515
|
+
}
|
|
1516
|
+
.block-checklist:not(.block-plan-features):has(> :nth-child(6)) {
|
|
1517
|
+
display: grid;
|
|
1518
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, max(16rem, calc(50% - 1rem))), 1fr));
|
|
1519
|
+
column-gap: 2rem;
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
/* "Priskort" (pricecards/View.tsx): the cards side by side, as many columns as there are cards where the block has
|
|
1523
|
+
room for them (it is a container: two from 34rem, three from 40rem, four from 56rem; four two by two before that),
|
|
1524
|
+
else under each other. Each card an outlined card (.card in ui.css): its name, its price large with what it is for
|
|
1525
|
+
beside it, its text, what is included under a line (.block-checklist) and its button at the bottom in the card's
|
|
1526
|
+
width, so the buttons of cards side by side are in line; the highlighted one with an edge in the accent and its
|
|
1527
|
+
label in a pill in the accent over its name. */
|
|
1528
|
+
.block-plans {
|
|
1529
|
+
container-type: inline-size;
|
|
1530
|
+
}
|
|
1531
|
+
.block-plans.block-in-text {
|
|
1532
|
+
margin-block: 2.5rem;
|
|
1533
|
+
}
|
|
1534
|
+
.block-plans-list {
|
|
1535
|
+
display: grid;
|
|
1536
|
+
gap: 1rem;
|
|
1537
|
+
margin: 0;
|
|
1538
|
+
padding: 0;
|
|
1539
|
+
list-style: none;
|
|
1540
|
+
}
|
|
1541
|
+
@container (width >= 34rem) {
|
|
1542
|
+
.block-plans-2,
|
|
1543
|
+
.block-plans-4 {
|
|
1544
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1545
|
+
}
|
|
1546
|
+
}
|
|
1547
|
+
@container (width >= 40rem) {
|
|
1548
|
+
.block-plans-3 {
|
|
1549
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1552
|
+
@container (width >= 56rem) {
|
|
1553
|
+
.block-plans-4 {
|
|
1554
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
1555
|
+
}
|
|
1556
|
+
}
|
|
1557
|
+
.block-plan {
|
|
1558
|
+
display: flex;
|
|
1559
|
+
flex-direction: column;
|
|
1560
|
+
color: var(--block-text);
|
|
1561
|
+
/* The price is as large as the card has room for (cqi). */
|
|
1562
|
+
container-type: inline-size;
|
|
1563
|
+
}
|
|
1564
|
+
.block-plan-featured {
|
|
1565
|
+
box-shadow: inset 0 0 0 2px var(--block-accent);
|
|
1566
|
+
}
|
|
1567
|
+
.block-plan-badge {
|
|
1568
|
+
align-self: flex-start;
|
|
1569
|
+
margin-bottom: 0.75rem;
|
|
1570
|
+
border-radius: var(--block-control-radius);
|
|
1571
|
+
background: var(--block-accent);
|
|
1572
|
+
color: var(--block-on-accent);
|
|
1573
|
+
padding: 0.25rem 0.75rem;
|
|
1574
|
+
font-size: var(--type-label-medium-size);
|
|
1575
|
+
line-height: var(--type-label-medium-line-height);
|
|
1576
|
+
font-weight: var(--type-label-medium-weight);
|
|
1577
|
+
letter-spacing: var(--type-label-medium-tracking);
|
|
1578
|
+
}
|
|
1579
|
+
.block-plan-name {
|
|
1580
|
+
margin: 0;
|
|
1581
|
+
font-size: var(--type-title-large-size);
|
|
1582
|
+
line-height: var(--type-title-large-line-height);
|
|
1583
|
+
font-weight: var(--type-title-large-weight);
|
|
1584
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
1585
|
+
}
|
|
1586
|
+
.block-plan-price {
|
|
1587
|
+
display: flex;
|
|
1588
|
+
flex-wrap: wrap;
|
|
1589
|
+
align-items: baseline;
|
|
1590
|
+
gap: 0.25rem 0.5rem;
|
|
1591
|
+
margin: 1rem 0 0;
|
|
1592
|
+
}
|
|
1593
|
+
.block-plan-amount {
|
|
1594
|
+
font-size: clamp(var(--type-headline-small-size), 16cqi, var(--type-display-small-size));
|
|
1595
|
+
line-height: var(--type-headline-large-line-height);
|
|
1596
|
+
font-weight: var(--type-headline-large-weight);
|
|
1597
|
+
letter-spacing: var(--type-headline-large-tracking);
|
|
1598
|
+
font-variant-numeric: tabular-nums;
|
|
1599
|
+
}
|
|
1600
|
+
.block-plan-unit {
|
|
1601
|
+
color: var(--block-muted);
|
|
1602
|
+
}
|
|
1603
|
+
.block-plan-text {
|
|
1604
|
+
margin: 0.75rem 0 0;
|
|
1605
|
+
color: var(--block-muted);
|
|
1606
|
+
}
|
|
1607
|
+
.block-plan-features {
|
|
1608
|
+
margin-top: 1.5rem;
|
|
1609
|
+
border-top: 1px solid var(--block-line);
|
|
1610
|
+
padding-top: 0.5rem;
|
|
1611
|
+
}
|
|
1612
|
+
.block-buttons.block-plan-buttons {
|
|
1613
|
+
flex-direction: column;
|
|
1614
|
+
margin-top: auto;
|
|
1615
|
+
padding-top: 1.5rem;
|
|
1616
|
+
}
|
|
1617
|
+
/* A narrow card: a long text on its button goes onto two lines rather than out of the card. */
|
|
1618
|
+
.block-plan-buttons .button {
|
|
1619
|
+
padding-block: 0.75rem;
|
|
1620
|
+
padding-inline: 1rem;
|
|
1621
|
+
white-space: normal;
|
|
1622
|
+
text-align: center;
|
|
1623
|
+
line-height: 1.25;
|
|
1624
|
+
}
|
|
1625
|
+
|
|
1626
|
+
/* ---- end of "Tjekliste" and "Priskort" ---- */
|
|
1627
|
+
|
|
1628
|
+
/* Opening and closing glide where the browser can animate ::details-content (else the script in
|
|
1629
|
+
Accordion.tsx does it); none with reduced motion. */
|
|
1630
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1631
|
+
.block-accordion {
|
|
1632
|
+
interpolate-size: allow-keywords;
|
|
1633
|
+
}
|
|
1634
|
+
.block-accordion-row::details-content {
|
|
1635
|
+
block-size: 0;
|
|
1636
|
+
overflow-y: clip;
|
|
1637
|
+
transition:
|
|
1638
|
+
block-size var(--motion-spatial),
|
|
1639
|
+
content-visibility var(--motion-spatial-duration) allow-discrete;
|
|
1640
|
+
}
|
|
1641
|
+
.block-accordion-row[open]::details-content {
|
|
1642
|
+
block-size: auto;
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1645
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1646
|
+
.block-accordion-label,
|
|
1647
|
+
.block-accordion-icon,
|
|
1648
|
+
.block-card,
|
|
1649
|
+
.block-card-arrow,
|
|
1650
|
+
.block-card-picture img {
|
|
1651
|
+
transition: none;
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
/* "Video": the video before it is played (video/, packages/editor/lib/video.mjs); the video takes its
|
|
1657
|
+
place. Outside the layers, as it is a link in the text's style (.prose), whose link style it undoes. */
|
|
1658
|
+
.prose .video-facade {
|
|
1659
|
+
display: flex;
|
|
1660
|
+
flex-direction: column;
|
|
1661
|
+
align-items: center;
|
|
1662
|
+
justify-content: center;
|
|
1663
|
+
gap: 0.5rem;
|
|
1664
|
+
width: 100%;
|
|
1665
|
+
aspect-ratio: 16 / 9;
|
|
1666
|
+
margin-block: 2em;
|
|
1667
|
+
padding: 1.5rem;
|
|
1668
|
+
border-radius: var(--block-radius);
|
|
1669
|
+
background: var(--block-tint);
|
|
1670
|
+
color: var(--block-text);
|
|
1671
|
+
text-align: center;
|
|
1672
|
+
text-decoration: none;
|
|
1673
|
+
}
|
|
1674
|
+
.prose .video-facade svg {
|
|
1675
|
+
color: var(--block-accent);
|
|
1676
|
+
transition: transform var(--motion-spatial);
|
|
1677
|
+
}
|
|
1678
|
+
.prose .video-facade:hover svg {
|
|
1679
|
+
transform: scale(1.08);
|
|
1680
|
+
}
|
|
1681
|
+
/* At most two lines; a longer title ends with "…" (the whole title is still the link's name). */
|
|
1682
|
+
.video-facade-title {
|
|
1683
|
+
display: -webkit-box;
|
|
1684
|
+
max-width: 40ch;
|
|
1685
|
+
overflow: hidden;
|
|
1686
|
+
font-size: var(--type-title-medium-size);
|
|
1687
|
+
line-height: var(--type-title-medium-line-height);
|
|
1688
|
+
font-weight: var(--type-title-medium-weight);
|
|
1689
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
1690
|
+
-webkit-box-orient: vertical;
|
|
1691
|
+
-webkit-line-clamp: 2;
|
|
1692
|
+
line-clamp: 2;
|
|
1693
|
+
}
|
|
1694
|
+
/* With a still from the video (packages/editor/scripts/video-thumbnails.mjs), as on YouTube: the still fills the
|
|
1695
|
+
box, the white play button in the middle of the box (not of the space above the title), the title
|
|
1696
|
+
at the bottom over a shade. */
|
|
1697
|
+
.prose .video-facade-still {
|
|
1698
|
+
position: relative;
|
|
1699
|
+
isolation: isolate;
|
|
1700
|
+
overflow: hidden;
|
|
1701
|
+
align-items: flex-start;
|
|
1702
|
+
justify-content: flex-end;
|
|
1703
|
+
gap: 0.25rem;
|
|
1704
|
+
padding: 1rem 1.25rem;
|
|
1705
|
+
background: #000;
|
|
1706
|
+
color: #fff;
|
|
1707
|
+
text-align: left;
|
|
1708
|
+
}
|
|
1709
|
+
.prose .video-facade-still::after {
|
|
1710
|
+
content: '';
|
|
1711
|
+
position: absolute;
|
|
1712
|
+
inset: 0;
|
|
1713
|
+
z-index: -1;
|
|
1714
|
+
background: linear-gradient(to bottom, rgb(0 0 0 / 0.15) 40%, rgb(0 0 0 / 0.75));
|
|
1715
|
+
}
|
|
1716
|
+
.prose .video-facade-still .video-facade-image {
|
|
1717
|
+
position: absolute;
|
|
1718
|
+
inset: 0;
|
|
1719
|
+
z-index: -2;
|
|
1720
|
+
width: 100%;
|
|
1721
|
+
height: 100%;
|
|
1722
|
+
margin: 0;
|
|
1723
|
+
object-fit: cover;
|
|
1724
|
+
}
|
|
1725
|
+
.prose .video-facade-still svg {
|
|
1726
|
+
position: absolute;
|
|
1727
|
+
inset: 0;
|
|
1728
|
+
margin: auto;
|
|
1729
|
+
color: #fff;
|
|
1730
|
+
filter: drop-shadow(0 2px 8px rgb(0 0 0 / 0.5));
|
|
1731
|
+
}
|
|
1732
|
+
.video-facade-still .video-facade-title {
|
|
1733
|
+
font-size: var(--type-title-small-size);
|
|
1734
|
+
line-height: var(--type-title-small-line-height);
|
|
1735
|
+
font-weight: var(--type-title-small-weight);
|
|
1736
|
+
letter-spacing: var(--type-title-small-tracking);
|
|
1737
|
+
color: #fff;
|
|
1738
|
+
text-shadow: 0 1px 3px rgb(0 0 0 / 0.8);
|
|
1739
|
+
}
|
|
1740
|
+
@media (min-width: 768px) {
|
|
1741
|
+
.prose .video-facade-still svg {
|
|
1742
|
+
width: 4.5rem;
|
|
1743
|
+
height: 4.5rem;
|
|
1744
|
+
}
|
|
1745
|
+
.video-facade-still .video-facade-title {
|
|
1746
|
+
font-size: var(--type-title-medium-size);
|
|
1747
|
+
line-height: var(--type-title-medium-line-height);
|
|
1748
|
+
font-weight: var(--type-title-medium-weight);
|
|
1749
|
+
letter-spacing: var(--type-title-medium-tracking);
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
/* A block's head with a label above its heading or a subheading under it (BlockHead.tsx in blocks/, an <hgroup>; only a
|
|
1754
|
+
heading is the text's own <h2>, without this): the label in small capitals, spaced out, in the accent; the
|
|
1755
|
+
subheading larger and quiet. Mostly in the text's style (.prose), so outside the layers, like the video above, whose
|
|
1756
|
+
margins it sets in place of the text's; a theme that places a block outside the text sets its own (.block-place in
|
|
1757
|
+
the standard theme). A theme gives it its own look outside the layers too (the standard theme: in the middle). */
|
|
1758
|
+
.block-head {
|
|
1759
|
+
margin-block: 2.5em 1.25em;
|
|
1760
|
+
}
|
|
1761
|
+
.block-head:first-child {
|
|
1762
|
+
margin-top: 0;
|
|
1763
|
+
}
|
|
1764
|
+
.block-head > h2,
|
|
1765
|
+
.block-head > .block-eyebrow,
|
|
1766
|
+
.block-head > .block-subheading {
|
|
1767
|
+
margin-block: 0;
|
|
1768
|
+
}
|
|
1769
|
+
.block-head > * + h2,
|
|
1770
|
+
.block-head > * + .block-subheading {
|
|
1771
|
+
margin-top: 0.75rem;
|
|
1772
|
+
}
|
|
1773
|
+
.block-head > .block-eyebrow + h2 {
|
|
1774
|
+
margin-top: 0.5rem;
|
|
1775
|
+
}
|
|
1776
|
+
.block-head > .block-eyebrow {
|
|
1777
|
+
font-size: var(--type-label-medium-size);
|
|
1778
|
+
line-height: var(--type-label-medium-line-height);
|
|
1779
|
+
font-weight: var(--type-label-medium-weight);
|
|
1780
|
+
letter-spacing: 0.12em;
|
|
1781
|
+
text-transform: uppercase;
|
|
1782
|
+
color: var(--block-accent);
|
|
1783
|
+
}
|
|
1784
|
+
.block-head > .block-subheading {
|
|
1785
|
+
font-size: var(--type-title-large-size);
|
|
1786
|
+
line-height: var(--type-title-large-line-height);
|
|
1787
|
+
font-weight: var(--type-title-large-weight);
|
|
1788
|
+
letter-spacing: var(--type-title-large-tracking);
|
|
1789
|
+
color: var(--block-muted);
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
/* A word or more in one of the site's colours, in a text (packages/editor/lib/text-colors.mjs, the colour button in the
|
|
1793
|
+
editor): the accent, or the quiet text's, both readable on the background, the surfaces and the tint (the site's
|
|
1794
|
+
pairs of colours, checked under "Farver"). Bold, italic and a link in it have its colour. Outside the layers, as it
|
|
1795
|
+
is in the text's style (.prose), whose colours of bold text and links it goes over. On a picture behind a hero's
|
|
1796
|
+
text, where only the text's colour can be read, it is the text's. */
|
|
1797
|
+
.color-accent,
|
|
1798
|
+
.color-accent :is(strong, em, a) {
|
|
1799
|
+
color: var(--block-accent);
|
|
1800
|
+
}
|
|
1801
|
+
.color-muted,
|
|
1802
|
+
.color-muted :is(strong, em, a) {
|
|
1803
|
+
color: var(--block-muted);
|
|
1804
|
+
}
|
|
1805
|
+
.block-hero-behind :is(.color-accent, .color-muted),
|
|
1806
|
+
.block-hero-behind :is(.color-accent, .color-muted) :is(strong, em, a) {
|
|
1807
|
+
color: inherit;
|
|
1808
|
+
}
|