jekyll-theme-centos 2.52.0.beta.3 → 2.52.0.beta.5
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.
- checksums.yaml +4 -4
- data/_data/base/announcement_schema.yml +50 -0
- data/_data/base/artwork_schema.yml +46 -0
- data/_data/base/backtotop_schema.yml +53 -0
- data/_data/base/bits.yml +96 -0
- data/_data/base/bits_schema.yml +183 -0
- data/_data/base/breadcrumb_schema.yml +14 -0
- data/_data/base/breakingnews_schema.yml +59 -0
- data/_data/base/color.yml +1042 -0
- data/_data/base/color_schema.yml +1036 -0
- data/_data/base/content.yml +2 -0
- data/_data/base/content_schema.yml +26 -0
- data/_data/base/converter_link_schema.yml +48 -0
- data/_data/base/copyright.yml +12 -0
- data/_data/base/copyright_schema.yml +34 -0
- data/_data/base/copyvalue_schema.yml +49 -0
- data/_data/base/datatable_schema.yml +57 -0
- data/_data/base/event_schema.yml +122 -0
- data/_data/base/fontawesome_schema.yml +49 -0
- data/_data/base/highlight_schema.yml +68 -0
- data/_data/base/languages.yml +186 -0
- data/_data/base/link_schema.yml +153 -0
- data/_data/base/locales_schema.yml +25 -0
- data/_data/base/navbar.yml +20 -0
- data/_data/base/navbar_schema.yml +121 -0
- data/_data/base/navindex_schema.yml +67 -0
- data/_data/base/ogp_schema.yml +186 -0
- data/_data/base/project.yml +37 -0
- data/_data/base/project_schema.yml +120 -0
- data/_data/base/shortcut_schema.yml +74 -0
- data/_data/base/social.yml +25 -0
- data/_data/base/social_schema.yml +53 -0
- data/_data/base/title_schema.yml +49 -0
- data/_data/base/toc_schema.yml +100 -0
- data/_data/download/cards.yml +309 -0
- data/_data/download/navbar.yml +11 -0
- data/_data/sponsors/carousel.yml +37 -0
- data/_data/sponsors/navbar.yml +6 -0
- data/_includes/base/announcement.html.liquid +51 -0
- data/_includes/base/artwork.html.liquid +49 -0
- data/_includes/base/backtotop.html.liquid +51 -0
- data/_includes/base/bits.html.liquid +135 -0
- data/_includes/base/breadcrumb.html.liquid +37 -0
- data/_includes/base/breakingnews.html.liquid +74 -0
- data/_includes/base/card.html.liquid +96 -0
- data/_includes/base/copyright.html.liquid +56 -0
- data/_includes/base/copyvalue.html.liquid +59 -0
- data/_includes/base/datatable.html.liquid +64 -0
- data/_includes/base/event.html.liquid +89 -0
- data/_includes/base/fontawesome.html.liquid +58 -0
- data/_includes/base/head.html.liquid +101 -0
- data/_includes/base/highlight.html.liquid +65 -0
- data/_includes/base/image.html.liquid +42 -0
- data/_includes/base/link.html.liquid +139 -0
- data/_includes/base/locales.html.liquid +41 -0
- data/_includes/base/navbar.html.liquid +106 -0
- data/_includes/base/navindex.html.liquid +162 -0
- data/_includes/base/ogp.html.liquid +118 -0
- data/_includes/base/project.html.liquid +90 -0
- data/_includes/base/script.html.liquid +59 -0
- data/_includes/base/shortcut.html.liquid +65 -0
- data/_includes/base/social.html.liquid +59 -0
- data/_includes/base/title.html.liquid +52 -0
- data/_includes/base/toc.html.liquid +91 -0
- data/_includes/base/toc_generator.html.liquid +189 -0
- data/_includes/download/cards-body-commands.html +7 -0
- data/_includes/download/cards-body-convert.html +10 -0
- data/_includes/download/cards-body-doc.html +9 -0
- data/_includes/download/cards-body-documentation.html +11 -0
- data/_includes/download/cards-body-eol.html +16 -0
- data/_includes/download/cards-body-mirrors.html +8 -0
- data/_includes/download/cards-body-screenshot.html +26 -0
- data/_includes/download/cards-body-screenshots.html +32 -0
- data/_includes/download/cards-body.html +8 -0
- data/_includes/download/cards-footer.html +3 -0
- data/_includes/download/cards-header-commands.html +8 -0
- data/_includes/download/cards-header-convert.html +8 -0
- data/_includes/download/cards-header-doc.html +8 -0
- data/_includes/download/cards-header-documentation.html +8 -0
- data/_includes/download/cards-header-eol.html +8 -0
- data/_includes/download/cards-header-mirrors.html +13 -0
- data/_includes/download/cards-header-screenshot.html +8 -0
- data/_includes/download/cards-header-screenshots.html +8 -0
- data/_includes/download/cards-header.html +13 -0
- data/_includes/download/cards.html +120 -0
- data/_includes/sponsors/cards.html +11 -0
- data/_includes/sponsors/carousel.html +24 -0
- data/_layouts/base/default.html +117 -0
- data/_layouts/download/cards.html +7 -0
- data/_layouts/download/default.html +7 -0
- data/_layouts/people/default.html +68 -0
- data/_sass/base/_customization.scss +251 -0
- data/_sass/base/_light-dark.scss +10 -0
- data/_sass/base/_maps.scss +104 -0
- data/_sass/base/_variables.scss +232 -0
- data/_sass/bootstrap/_accordion.scss +153 -0
- data/_sass/bootstrap/_alert.scss +68 -0
- data/_sass/bootstrap/_badge.scss +38 -0
- data/_sass/bootstrap/_breadcrumb.scss +40 -0
- data/_sass/bootstrap/_button-group.scss +147 -0
- data/_sass/bootstrap/_buttons.scss +216 -0
- data/_sass/bootstrap/_card.scss +238 -0
- data/_sass/bootstrap/_carousel.scss +226 -0
- data/_sass/bootstrap/_close.scss +66 -0
- data/_sass/bootstrap/_containers.scss +41 -0
- data/_sass/bootstrap/_dropdown.scss +250 -0
- data/_sass/bootstrap/_forms.scss +9 -0
- data/_sass/bootstrap/_functions.scss +302 -0
- data/_sass/bootstrap/_grid.scss +39 -0
- data/_sass/bootstrap/_helpers.scss +12 -0
- data/_sass/bootstrap/_images.scss +42 -0
- data/_sass/bootstrap/_list-group.scss +199 -0
- data/_sass/bootstrap/_maps.scss +174 -0
- data/_sass/bootstrap/_mixins.scss +42 -0
- data/_sass/bootstrap/_modal.scss +240 -0
- data/_sass/bootstrap/_nav.scss +197 -0
- data/_sass/bootstrap/_navbar.scss +289 -0
- data/_sass/bootstrap/_offcanvas.scss +147 -0
- data/_sass/bootstrap/_pagination.scss +109 -0
- data/_sass/bootstrap/_placeholders.scss +51 -0
- data/_sass/bootstrap/_popover.scss +196 -0
- data/_sass/bootstrap/_progress.scss +68 -0
- data/_sass/bootstrap/_reboot.scss +617 -0
- data/_sass/bootstrap/_root.scss +187 -0
- data/_sass/bootstrap/_spinners.scss +86 -0
- data/_sass/bootstrap/_tables.scss +171 -0
- data/_sass/bootstrap/_toasts.scss +73 -0
- data/_sass/bootstrap/_tooltip.scss +119 -0
- data/_sass/bootstrap/_transitions.scss +27 -0
- data/_sass/bootstrap/_type.scss +106 -0
- data/_sass/bootstrap/_utilities.scss +806 -0
- data/_sass/bootstrap/_variables-dark.scss +102 -0
- data/_sass/bootstrap/_variables.scss +1753 -0
- data/_sass/bootstrap/bootstrap-grid.scss +62 -0
- data/_sass/bootstrap/bootstrap-reboot.scss +10 -0
- data/_sass/bootstrap/bootstrap-utilities.scss +19 -0
- data/_sass/bootstrap/bootstrap.scss +52 -0
- data/_sass/bootstrap/forms/_floating-labels.scss +97 -0
- data/_sass/bootstrap/forms/_form-check.scss +189 -0
- data/_sass/bootstrap/forms/_form-control.scss +214 -0
- data/_sass/bootstrap/forms/_form-range.scss +91 -0
- data/_sass/bootstrap/forms/_form-select.scss +80 -0
- data/_sass/bootstrap/forms/_form-text.scss +11 -0
- data/_sass/bootstrap/forms/_input-group.scss +132 -0
- data/_sass/bootstrap/forms/_labels.scss +36 -0
- data/_sass/bootstrap/forms/_validation.scss +12 -0
- data/_sass/bootstrap/helpers/_clearfix.scss +3 -0
- data/_sass/bootstrap/helpers/_color-bg.scss +7 -0
- data/_sass/bootstrap/helpers/_colored-links.scss +30 -0
- data/_sass/bootstrap/helpers/_focus-ring.scss +5 -0
- data/_sass/bootstrap/helpers/_icon-link.scss +25 -0
- data/_sass/bootstrap/helpers/_position.scss +36 -0
- data/_sass/bootstrap/helpers/_ratio.scss +26 -0
- data/_sass/bootstrap/helpers/_stacks.scss +15 -0
- data/_sass/bootstrap/helpers/_stretched-link.scss +15 -0
- data/_sass/bootstrap/helpers/_text-truncation.scss +7 -0
- data/_sass/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/_sass/bootstrap/helpers/_vr.scss +8 -0
- data/_sass/bootstrap/mixins/_alert.scss +18 -0
- data/_sass/bootstrap/mixins/_backdrop.scss +14 -0
- data/_sass/bootstrap/mixins/_banner.scss +7 -0
- data/_sass/bootstrap/mixins/_border-radius.scss +78 -0
- data/_sass/bootstrap/mixins/_box-shadow.scss +24 -0
- data/_sass/bootstrap/mixins/_breakpoints.scss +127 -0
- data/_sass/bootstrap/mixins/_buttons.scss +70 -0
- data/_sass/bootstrap/mixins/_caret.scss +69 -0
- data/_sass/bootstrap/mixins/_clearfix.scss +9 -0
- data/_sass/bootstrap/mixins/_color-mode.scss +21 -0
- data/_sass/bootstrap/mixins/_color-scheme.scss +7 -0
- data/_sass/bootstrap/mixins/_container.scss +11 -0
- data/_sass/bootstrap/mixins/_deprecate.scss +10 -0
- data/_sass/bootstrap/mixins/_forms.scss +163 -0
- data/_sass/bootstrap/mixins/_gradients.scss +47 -0
- data/_sass/bootstrap/mixins/_grid.scss +151 -0
- data/_sass/bootstrap/mixins/_image.scss +16 -0
- data/_sass/bootstrap/mixins/_list-group.scss +26 -0
- data/_sass/bootstrap/mixins/_lists.scss +7 -0
- data/_sass/bootstrap/mixins/_pagination.scss +10 -0
- data/_sass/bootstrap/mixins/_reset-text.scss +17 -0
- data/_sass/bootstrap/mixins/_resize.scss +6 -0
- data/_sass/bootstrap/mixins/_table-variants.scss +24 -0
- data/_sass/bootstrap/mixins/_text-truncate.scss +8 -0
- data/_sass/bootstrap/mixins/_transition.scss +26 -0
- data/_sass/bootstrap/mixins/_utilities.scss +97 -0
- data/_sass/bootstrap/mixins/_visually-hidden.scss +38 -0
- data/_sass/bootstrap/utilities/_api.scss +47 -0
- data/_sass/bootstrap/vendor/_rfs.scss +348 -0
- data/assets/css/base/stylesheet.min.scss +35 -0
- data/assets/icons/android-chrome-192.png +0 -0
- data/assets/icons/android-chrome-512.png +0 -0
- data/assets/icons/apple-touch-icon.png +0 -0
- data/assets/icons/favicon-16.png +0 -0
- data/assets/icons/favicon-32.png +0 -0
- data/assets/icons/favicon.ico +0 -0
- data/assets/icons/favicon.svg +1 -0
- data/assets/img/anaconda-symbolic.svg +1 -0
- data/assets/img/anaconda.svg +1 -0
- data/assets/img/base/centos-colors.gpl +55 -0
- data/assets/img/base/page-layout-default.png +0 -0
- data/assets/img/base/page-layout-default.svg +1158 -0
- data/assets/img/base/page-with-alert.png +0 -0
- data/assets/img/base/page-with-alert.svg +359 -0
- data/assets/img/base/page-with-announcement.png +0 -0
- data/assets/img/base/page-with-announcement.svg +499 -0
- data/assets/img/base/page-with-artwork.png +0 -0
- data/assets/img/base/page-with-artwork.svg +368 -0
- data/assets/img/base/page-with-backtotop.png +0 -0
- data/assets/img/base/page-with-backtotop.svg +275 -0
- data/assets/img/base/page-with-bits.png +0 -0
- data/assets/img/base/page-with-bits.svg +311 -0
- data/assets/img/base/page-with-breadcrumb.png +0 -0
- data/assets/img/base/page-with-breadcrumb.svg +676 -0
- data/assets/img/base/page-with-breakingnews.png +0 -0
- data/assets/img/base/page-with-breakingnews.svg +903 -0
- data/assets/img/base/page-with-color.png +0 -0
- data/assets/img/base/page-with-color.svg +57 -0
- data/assets/img/base/page-with-copyright.png +0 -0
- data/assets/img/base/page-with-copyright.svg +233 -0
- data/assets/img/base/page-with-copyvalue.png +0 -0
- data/assets/img/base/page-with-copyvalue.svg +57 -0
- data/assets/img/base/page-with-datatable.png +0 -0
- data/assets/img/base/page-with-datatable.svg +857 -0
- data/assets/img/base/page-with-event.png +0 -0
- data/assets/img/base/page-with-event.svg +522 -0
- data/assets/img/base/page-with-fontawesome.png +0 -0
- data/assets/img/base/page-with-fontawesome.svg +147 -0
- data/assets/img/base/page-with-heading.png +0 -0
- data/assets/img/base/page-with-heading.svg +57 -0
- data/assets/img/base/page-with-highlight.png +0 -0
- data/assets/img/base/page-with-highlight.svg +86 -0
- data/assets/img/base/page-with-link.png +0 -0
- data/assets/img/base/page-with-link.svg +395 -0
- data/assets/img/base/page-with-locales.png +0 -0
- data/assets/img/base/page-with-locales.svg +724 -0
- data/assets/img/base/page-with-navbar.png +0 -0
- data/assets/img/base/page-with-navbar.svg +438 -0
- data/assets/img/base/page-with-navindex.png +0 -0
- data/assets/img/base/page-with-navindex.svg +279 -0
- data/assets/img/base/page-with-ogp.png +0 -0
- data/assets/img/base/page-with-ogp.svg +368 -0
- data/assets/img/base/page-with-project.png +0 -0
- data/assets/img/base/page-with-project.svg +822 -0
- data/assets/img/base/page-with-shortcut.png +0 -0
- data/assets/img/base/page-with-shortcut.svg +233 -0
- data/assets/img/base/page-with-social.png +0 -0
- data/assets/img/base/page-with-social.svg +233 -0
- data/assets/img/base/page-with-title.png +0 -0
- data/assets/img/base/page-with-title.svg +584 -0
- data/assets/img/base/page-with-toc.png +0 -0
- data/assets/img/base/page-with-toc.svg +438 -0
- data/assets/img/base/screenshot-example-1200x600.png +0 -0
- data/assets/img/base/screenshot-example-1200x600.svg +114 -0
- data/assets/img/centos-dynamicmsg-logo.svg +1 -0
- data/assets/img/centos-dynamicmsg-type.svg +1 -0
- data/assets/img/centos-dynamicmsg-whitelogo.svg +1 -0
- data/assets/img/centos-dynamicmsg-whitetype.svg +1 -0
- data/assets/img/centos-gdm-whitelogo.svg +1 -0
- data/assets/img/centos-ipa-whiteheader.svg +1 -0
- data/assets/img/centos-logo-2bits.svg +1 -0
- data/assets/img/centos-logo.svg +1 -0
- data/assets/img/centos-message-logo.svg +1 -0
- data/assets/img/centos-motif.png +0 -0
- data/assets/img/centos-poweredby-logo.svg +1 -0
- data/assets/img/centos-social-share.png +0 -0
- data/assets/img/centos-symbol-2bits.svg +1 -0
- data/assets/img/centos-symbol.svg +1 -0
- data/assets/img/centos-type.svg +1 -0
- data/assets/img/centos-vertical-logo.svg +1 -0
- data/assets/img/centos-vertical-message-logo.svg +1 -0
- data/assets/img/centos-whitelogo.svg +1 -0
- data/assets/img/download/centos-linux-7-2009-screenshot-n.png +0 -0
- data/assets/img/download/centos-stream-8-screenshot-n.png +0 -0
- data/assets/img/download/centos-stream-9-screenshot-n.png +0 -0
- data/assets/img/download/distribution-release-screenshot-1.png +0 -0
- data/assets/img/download/distribution-release-screenshot-2.png +0 -0
- data/assets/img/download/distribution-release-screenshot-3.png +0 -0
- data/assets/img/download/distribution-release-screenshot-n.png +0 -0
- data/assets/img/download/distribution-release-screenshot-n.svg +134 -0
- data/assets/img/download/download.svg +421 -0
- data/assets/img/download/fig-the-downloads-cards-presentation-template.png +0 -0
- data/assets/img/people/page.svg +900 -0
- data/assets/img/people/page.webp +0 -0
- data/assets/img/people/username.webp +0 -0
- data/assets/img/sponsors/screenshot-sponsors-cards-layout.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-cards.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-carousel.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-default-layout.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-logo.png +0 -0
- data/assets/img/sponsors/sponsor-logo-1.png +0 -0
- data/assets/img/sponsors/sponsor-logo-2.png +0 -0
- data/assets/img/sponsors/sponsor-logo-3.png +0 -0
- data/assets/img/sponsors/sponsor-logo-4.png +0 -0
- data/assets/img/sponsors/sponsor-logo-5.png +0 -0
- data/assets/img/sponsors/sponsor-logo-6.png +0 -0
- data/assets/img/sponsors/sponsor-logo-7.png +0 -0
- data/assets/img/sponsors/sponsor-logo-8.png +0 -0
- data/assets/img/sponsors/sponsors-logo.svg +563 -0
- data/assets/js/base/backtotop.js +23 -0
- data/assets/js/base/copyvalue.js +251 -0
- data/assets/js/base/datatable.js +55 -0
- data/assets/js/base/highlight.js +6 -0
- data/assets/js/base/init-tooltips.js +5 -0
- data/assets/js/bootstrap.bundle.js +6312 -0
- data/assets/js/bootstrap.bundle.js.map +1 -0
- data/assets/js/bootstrap.bundle.min.js +7 -0
- data/assets/js/bootstrap.bundle.min.js.map +1 -0
- data/assets/js/bootstrap.esm.js +4447 -0
- data/assets/js/bootstrap.esm.js.map +1 -0
- data/assets/js/bootstrap.esm.min.js +7 -0
- data/assets/js/bootstrap.esm.min.js.map +1 -0
- data/assets/js/bootstrap.js +4494 -0
- data/assets/js/bootstrap.js.map +1 -0
- data/assets/js/bootstrap.min.js +7 -0
- data/assets/js/bootstrap.min.js.map +1 -0
- metadata +314 -1
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
// This file is for custom CSS rules and utility classes that override standard
|
|
2
|
+
// Bootstrap structure. It should be the last file in your import sequence.
|
|
3
|
+
// Here, you define and generate custom utility classes using the variables and
|
|
4
|
+
// maps that were set up previously.
|
|
5
|
+
|
|
6
|
+
// ================================================================================
|
|
7
|
+
// CSS Custom Properties (for dynamic inline styles)
|
|
8
|
+
// ================================================================================
|
|
9
|
+
// These variables are used in head.html.liquid for dynamic CSS generation.
|
|
10
|
+
// Defined here for centralized configuration and availability to inline styles.
|
|
11
|
+
:root {
|
|
12
|
+
// Breaking News Component
|
|
13
|
+
// Measurements used for calculating scroll-margin-top in head.html.liquid
|
|
14
|
+
--breakingnews-alert-height: 31px;
|
|
15
|
+
--navbar-height: 42px;
|
|
16
|
+
--heading-margin-top: 48px;
|
|
17
|
+
|
|
18
|
+
// Highlight.js Icon Sizing
|
|
19
|
+
// Used for copy button icon dimensions
|
|
20
|
+
--highlight-icon-width: 24px;
|
|
21
|
+
--highlight-icon-height: 24px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
body {
|
|
25
|
+
padding-top: $breakingnews-height;
|
|
26
|
+
|
|
27
|
+
.sticky-top-breakingnews {
|
|
28
|
+
top: $breakingnews-height;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// --------------------------------------------------------------------------------
|
|
33
|
+
// Backgrounds, Texts, and Gradients classes
|
|
34
|
+
// --------------------------------------------------------------------------------
|
|
35
|
+
@each $color, $value in $theme-colors {
|
|
36
|
+
// Create a background utility class for each color.
|
|
37
|
+
.bg-#{$color} {
|
|
38
|
+
background-color: $value;
|
|
39
|
+
}
|
|
40
|
+
// Create a text color utility class for each color.
|
|
41
|
+
.text-#{$color} {
|
|
42
|
+
color: $value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@each $color, $value in $centos-text-gradients {
|
|
47
|
+
.text-gradient-#{$color} {
|
|
48
|
+
background-image: $value;
|
|
49
|
+
-webkit-background-clip: text;
|
|
50
|
+
-webkit-text-fill-color: transparent;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.bg-image {
|
|
55
|
+
background-image: url("../../img/centos-motif.png");
|
|
56
|
+
background-size: cover;
|
|
57
|
+
background-repeat: no-repeat;
|
|
58
|
+
}
|
|
59
|
+
.bg-image-center {
|
|
60
|
+
background-position: center;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.bg-image-top {
|
|
64
|
+
background-position: top;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.bg-image-bottom {
|
|
68
|
+
background-position: bottom;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// --------------------------------------------------------------------------------
|
|
72
|
+
// Lists
|
|
73
|
+
// --------------------------------------------------------------------------------
|
|
74
|
+
#pageToc {
|
|
75
|
+
li {
|
|
76
|
+
list-style: none;
|
|
77
|
+
}
|
|
78
|
+
li:before {
|
|
79
|
+
font-family: FontAwesome;
|
|
80
|
+
font-size: .35rem;
|
|
81
|
+
color: $body-color;
|
|
82
|
+
position: relative;
|
|
83
|
+
left: -0.5rem;
|
|
84
|
+
top: -0.2rem;
|
|
85
|
+
content:"\f111";
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// --------------------------------------------------------------------------------
|
|
90
|
+
// Alerts (p), announcements (div), and breakingnews (div)
|
|
91
|
+
// --------------------------------------------------------------------------------
|
|
92
|
+
// Breaking News: Use Font Awesome HTML icons (fa-solid fa-bullhorn) for consistent
|
|
93
|
+
// visual identity across all color variations.
|
|
94
|
+
// Positioned at page level with sticky positioning.
|
|
95
|
+
// Excluded from CSS icon styling via .breakingnews class.
|
|
96
|
+
// Announcements: Use Font Awesome HTML icons (fa-solid fa-bullhorn) for consistent
|
|
97
|
+
// visual identity across all color variations.
|
|
98
|
+
// Positioned within .content (inside main).
|
|
99
|
+
// Excluded from CSS icon styling via .announcement class.
|
|
100
|
+
// Alerts: Use CSS-based SVG icons ($centos-alert-icons map) for markdown-based
|
|
101
|
+
// alerts within .content, with type-specific icons per color.
|
|
102
|
+
// Only applied to .alert:not(.announcement) to avoid styling announcements.
|
|
103
|
+
|
|
104
|
+
$centos-alert-icons: (
|
|
105
|
+
"primary": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' viewBox='0 0 42.333 42.333'><g transform='rotate(45 -180.13 -610.203) scale(1.0529)'><circle cx='388.123' cy='-290.716' r='20.103' style='fill:rgba(#{to-rgb(shade-color(map-get($theme-colors, 'primary'), 60%))},1);stroke:none;stroke-width:1.32292;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke;stop-color:#{to-rgb(shade-color(map-get($theme-colors, 'primary'), 60%))}'/><path d='M377.366-301.473v6.301l-4.456 4.456 4.456 4.456v6.302h6.302l4.456 4.456 4.456-4.456h6.301v-6.302l4.456-4.456-4.456-4.456v-6.301h-6.301l-4.456-4.456-4.456 4.456zm2.271 4.183 1.913-1.912 3.227 3.227v1.913h-1.912zm-2.163 5.222h4.565l1.352 1.352-1.352 1.353h-4.564zm9.297-9.297h2.705v4.564l-1.352 1.353-1.353-1.353zm.091 7.607 1.261 1.282 1.26-1.283-.015 1.798 1.798-.016-1.282 1.26 1.283 1.261-1.798-.015.016 1.798-1.26-1.282-1.261 1.283.015-1.799-1.798.016 1.282-1.26-1.283-1.26 1.799.015zm-7.225 9.617 3.228-3.228h1.912v1.913l-3.227 3.227zm11.833-11.834 3.228-3.227 1.913 1.912-3.228 3.228h-1.912zm-4.698 11.345 1.352-1.352 1.352 1.352v4.564h-2.704zm6.085-6.085 1.352-1.353h4.564v2.705h-4.564zm-1.387 3.346h1.913l3.228 3.228-1.913 1.912-3.228-3.227z' style='fill:%23fff;fill-opacity:1;stroke-width:9.12808;stroke-linecap:round;paint-order:fill markers stroke;stop-color:%23000'/></g></svg>"),
|
|
106
|
+
"secondary": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' viewBox='0 0 42.333 42.333'><g transform='rotate(45 -180.13 -610.203) scale(1.0529)'><circle cx='388.123' cy='-290.716' r='20.103' style='fill:rgba(#{to-rgb(shade-color(map-get($theme-colors, 'secondary'), 60%))},1);stroke:none;stroke-width:1.32292;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke;stop-color:#{to-rgb(shade-color(map-get($theme-colors, 'secondary'), 60%))}'/><path d='M377.366-301.473v6.301l-4.456 4.456 4.456 4.456v6.302h6.302l4.456 4.456 4.456-4.456h6.301v-6.302l4.456-4.456-4.456-4.456v-6.301h-6.301l-4.456-4.456-4.456 4.456zm2.271 4.183 1.913-1.912 3.227 3.227v1.913h-1.912zm-2.163 5.222h4.565l1.352 1.352-1.352 1.353h-4.564zm9.297-9.297h2.705v4.564l-1.352 1.353-1.353-1.353zm.091 7.607 1.261 1.282 1.26-1.283-.015 1.798 1.798-.016-1.282 1.26 1.283 1.261-1.798-.015.016 1.798-1.26-1.282-1.261 1.283.015-1.799-1.798.016 1.282-1.26-1.283-1.26 1.799.015zm-7.225 9.617 3.228-3.228h1.912v1.913l-3.227 3.227zm11.833-11.834 3.228-3.227 1.913 1.912-3.228 3.228h-1.912zm-4.698 11.345 1.352-1.352 1.352 1.352v4.564h-2.704zm6.085-6.085 1.352-1.353h4.564v2.705h-4.564zm-1.387 3.346h1.913l3.228 3.228-1.913 1.912-3.228-3.227z' style='fill:%23fff;fill-opacity:1;stroke-width:9.12808;stroke-linecap:round;paint-order:fill markers stroke;stop-color:%23000'/></g></svg>"),
|
|
107
|
+
"warning": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' fill='rgba(#{to-rgb(shade-color(map-get($theme-colors, 'warning'), 60%))},1)' viewBox='0 0 512 512'><path d='M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'/></svg>"),
|
|
108
|
+
"info": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' fill='rgba(#{to-rgb(shade-color(map-get($theme-colors, 'info'), 60%))},1)' viewBox='0 0 512 512'><path d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z'/></svg>"),
|
|
109
|
+
"danger": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' fill='rgba(#{to-rgb(shade-color(map-get($theme-colors, 'danger'), 60%))},1)' viewBox='0 0 512 512'><path d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z'/></svg>"),
|
|
110
|
+
"success": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' fill='rgba(#{to-rgb(shade-color(map-get($theme-colors, 'success'), 60%))},1)' viewBox='0 0 512 512'><path d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z'/></svg>"),
|
|
111
|
+
"light": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' fill='rgba(#{to-rgb(shade-color(map-get($theme-colors, 'light'), 60%))},1)' viewBox='0 0 512 512'><path d='M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z'/></svg>"),
|
|
112
|
+
"dark": url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' height='1rem' fill='rgba(#{to-rgb(shade-color(map-get($theme-colors, 'dark'), 60%))},1)' viewBox='0 0 512 512'><path d='M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z'/></svg>")
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
// Breaking news with HTML-based Font Awesome icons
|
|
116
|
+
// Positioned at page level (outside .content)
|
|
117
|
+
.sticky-top-breakingnews {
|
|
118
|
+
.breakingnews {
|
|
119
|
+
padding-left: $spacer * 1.25;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.content {
|
|
124
|
+
// Markdown-based alerts with CSS-generated icons
|
|
125
|
+
// Only apply to alerts that are neither announcements nor breaking news
|
|
126
|
+
.alert:not(.announcement):not(.breakingnews) {
|
|
127
|
+
padding-left: $spacer * 3;
|
|
128
|
+
border-left-width: 0.5rem;
|
|
129
|
+
|
|
130
|
+
@each $color, $icon-url in $centos-alert-icons {
|
|
131
|
+
&.alert-#{$color} {
|
|
132
|
+
&::before {
|
|
133
|
+
content: "";
|
|
134
|
+
position: absolute;
|
|
135
|
+
left: 1rem;
|
|
136
|
+
top: 1.75rem;
|
|
137
|
+
transform: translateY(-50%);
|
|
138
|
+
width: 1.25rem;
|
|
139
|
+
height: 1.25rem;
|
|
140
|
+
background-image: #{$icon-url};
|
|
141
|
+
background-repeat: no-repeat;
|
|
142
|
+
background-position: center;
|
|
143
|
+
background-size: contain;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
main {
|
|
151
|
+
// --------------------------------------------------------------------------------
|
|
152
|
+
// Navbar and linked headings' correction.
|
|
153
|
+
//
|
|
154
|
+
// By default, when you access page headings from the page table of content
|
|
155
|
+
// (toc) links, the heading is hidden behind the navbar. This workaround
|
|
156
|
+
// fixes the linked headings visibility issue in the page.
|
|
157
|
+
// Also applies the same correction to accordion buttons for consistent behavior.
|
|
158
|
+
// --------------------------------------------------------------------------------
|
|
159
|
+
.content > h1,
|
|
160
|
+
.content > h2,
|
|
161
|
+
.content > h3,
|
|
162
|
+
.content > h4,
|
|
163
|
+
.content > h5,
|
|
164
|
+
.content > h6 {
|
|
165
|
+
scroll-margin-top: 80px;
|
|
166
|
+
scroll-margin-bottom: 100px;
|
|
167
|
+
margin-top: 3rem;
|
|
168
|
+
}
|
|
169
|
+
.content > h2 {
|
|
170
|
+
border-bottom: 0.35rem solid $primary;
|
|
171
|
+
padding-bottom: $spacer * 0.5;
|
|
172
|
+
margin-bottom: $spacer * 0.75;
|
|
173
|
+
}
|
|
174
|
+
.content > figure {
|
|
175
|
+
scroll-margin-top: 80px;
|
|
176
|
+
scroll-margin-bottom: 100px;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Accordion containers' correction.
|
|
180
|
+
//
|
|
181
|
+
// When accessing accordion containers via internal anchor links, they wouldn't be
|
|
182
|
+
// hidden behind the navbar. This correction ensures accordion containers remain
|
|
183
|
+
// visible when linked to, and works in conjunction with the dynamic calculation
|
|
184
|
+
// in head.html.liquid when breaking news is present.
|
|
185
|
+
//
|
|
186
|
+
// Note: Applied to .accordion container (not items) to avoid disrupting accordion
|
|
187
|
+
// item internal layout while still providing proper scroll margin and visual spacing.
|
|
188
|
+
.content .accordion,
|
|
189
|
+
.content .accordion-item {
|
|
190
|
+
scroll-margin-top: 80px;
|
|
191
|
+
scroll-margin-bottom: 100px;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// --------------------------------------------------------------------------------
|
|
195
|
+
// DataTable BS5 corrections
|
|
196
|
+
// --------------------------------------------------------------------------------
|
|
197
|
+
.content { .dt-container { margin-bottom: 1rem; } }
|
|
198
|
+
|
|
199
|
+
// --------------------------------------------------------------------------------
|
|
200
|
+
// Highlightjs-copy
|
|
201
|
+
// --------------------------------------------------------------------------------
|
|
202
|
+
.content {
|
|
203
|
+
code.hljs {
|
|
204
|
+
border-radius: var(--bs-border-radius-lg);
|
|
205
|
+
}
|
|
206
|
+
pre {
|
|
207
|
+
.hljs {
|
|
208
|
+
max-height: 50vh;
|
|
209
|
+
overflow: auto;
|
|
210
|
+
}
|
|
211
|
+
.hljs-copy-button {
|
|
212
|
+
top: 0.2rem;
|
|
213
|
+
right: 0.2rem;
|
|
214
|
+
border-radius: var(--bs-border-radius-lg);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.hljs-copy-button:not([data-copied="true"])::before {
|
|
218
|
+
mask-size: 100% 100%;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.hljs-copy-button[data-copied='true'] {
|
|
222
|
+
color: transparent !important;
|
|
223
|
+
font-size: 0 !important;
|
|
224
|
+
text-indent: -9999px !important;
|
|
225
|
+
width: 1.85rem !important; /* Set a fixed width for the button */
|
|
226
|
+
height: 1.85rem !important; /* Set a fixed height for the button */
|
|
227
|
+
position: relative !important; /* Required for absolute positioning of the SVG */
|
|
228
|
+
|
|
229
|
+
}
|
|
230
|
+
.hljs-copy-button[data-copied='true']::after {
|
|
231
|
+
content: "";
|
|
232
|
+
background-repeat: no-repeat;
|
|
233
|
+
background-size: contain;
|
|
234
|
+
position: absolute;
|
|
235
|
+
top: 50%;
|
|
236
|
+
left: 50%;
|
|
237
|
+
transform: translate(-50%, -50%);
|
|
238
|
+
width: 1rem; /* Adjust icon size as needed */
|
|
239
|
+
height: 1rem; /* Adjust icon size as needed */
|
|
240
|
+
}
|
|
241
|
+
code {
|
|
242
|
+
border-left: 5px;
|
|
243
|
+
border-top: 1px;
|
|
244
|
+
border-right: 1px;
|
|
245
|
+
border-bottom: 1px;
|
|
246
|
+
border-color: var(--bs-light-border-subtle);
|
|
247
|
+
border-style: solid;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Auto-generated from saturation-normalized shade algorithm
|
|
2
|
+
// DO NOT EDIT: This file is generated by generate-scss-light-dark.py
|
|
3
|
+
// Source: centos-purple (#A14F8C)
|
|
4
|
+
// Generated: Shade 50 → $light, Shade 950 → $dark
|
|
5
|
+
//
|
|
6
|
+
// To regenerate after color changes, run:
|
|
7
|
+
// python3 scripts/colors/generate-scss-light-dark.py
|
|
8
|
+
|
|
9
|
+
$light: #F6EDF4; // centos-purple-50: reduced saturation (~60%), high lightness (~95%)
|
|
10
|
+
$dark: #22061B; // centos-purple-950: enhanced saturation (100%), low lightness (8%)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
@use "sass:math";
|
|
2
|
+
|
|
3
|
+
// Merge the base colors into the main `$theme-colors` map
|
|
4
|
+
$theme-colors: map-merge($theme-colors, $centos-base-colors);
|
|
5
|
+
|
|
6
|
+
// Generate all custom color shades and merge them into `$theme-colors`.
|
|
7
|
+
// Uses saturation-normalized shade generation to maintain brand saturation
|
|
8
|
+
// throughout the dark range (grades 800-950), creating visual consistency
|
|
9
|
+
// between web UI and wallpaper colors.
|
|
10
|
+
@each $name, $color in $centos-base-colors {
|
|
11
|
+
@each $shade in $centos-color-shades {
|
|
12
|
+
$shade-name: "#{$name}-#{$shade}";
|
|
13
|
+
$shade-color: null;
|
|
14
|
+
|
|
15
|
+
@if $shade < 500 {
|
|
16
|
+
// Light shades: use standard tint-color (adds white, works well)
|
|
17
|
+
$shade-color: tint-color($color, percentage(math.div(500 - $shade, 500)));
|
|
18
|
+
} @else if $shade > 500 {
|
|
19
|
+
// Special case: Green 700 needs 30% black mix (not 20%) for AA compliance.
|
|
20
|
+
// This ensures WHITE text contrast meets 4.5:1 threshold.
|
|
21
|
+
@if $name == "centos-green" and $shade == 700 {
|
|
22
|
+
$shade-color: shade-color($color, 30%);
|
|
23
|
+
} @else {
|
|
24
|
+
// NEW: Use saturation-normalized shade for all other dark shades
|
|
25
|
+
// This function increases saturation multiplier for grades 800-950
|
|
26
|
+
// Result: vivid dark colors that feel on-brand
|
|
27
|
+
$shade-color: saturated-shade($color, $shade);
|
|
28
|
+
}
|
|
29
|
+
} @else {
|
|
30
|
+
// Grade 500: use base color as-is
|
|
31
|
+
$shade-color: $color;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
$theme-colors: map-merge($theme-colors, ($shade-name: $shade-color));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Define custom background gradients.
|
|
39
|
+
$centos-bg-gradients: (
|
|
40
|
+
"primary": linear-gradient(
|
|
41
|
+
90deg,
|
|
42
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 50%,
|
|
43
|
+
rgba(map-get($theme-colors, "centos-orange-100"), 1) 100%
|
|
44
|
+
),
|
|
45
|
+
"secondary": linear-gradient(
|
|
46
|
+
90deg,
|
|
47
|
+
rgba(map-get($theme-colors, "centos-orange-100"), 1) 50%,
|
|
48
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 100%
|
|
49
|
+
),
|
|
50
|
+
"header": linear-gradient(
|
|
51
|
+
180deg,
|
|
52
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 0%,
|
|
53
|
+
rgba($white, 0.98) 100%
|
|
54
|
+
),
|
|
55
|
+
"footer": linear-gradient(
|
|
56
|
+
180deg,
|
|
57
|
+
rgba($white, 1) 0%,
|
|
58
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 100%
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
// Define custom text gradients.
|
|
63
|
+
$centos-text-gradients: (
|
|
64
|
+
"primary": linear-gradient(
|
|
65
|
+
90deg,
|
|
66
|
+
rgba(map-get($theme-colors, "centos-purple"), 1) 50%,
|
|
67
|
+
rgba(map-get($theme-colors, "centos-orange"), 1) 100%
|
|
68
|
+
),
|
|
69
|
+
"secondary": linear-gradient(
|
|
70
|
+
270deg,
|
|
71
|
+
rgba(map-get($theme-colors, "centos-purple"), 1) 50%,
|
|
72
|
+
rgba(map-get($theme-colors, "centos-orange"), 1) 100%
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
// Define custom utilities using the correct Bootstrap API. This allows you to
|
|
77
|
+
// use classes like `text-bg-centos-purple-800`.
|
|
78
|
+
$utilities: map-merge(
|
|
79
|
+
$utilities,
|
|
80
|
+
(
|
|
81
|
+
"centos-text-bg-color": (
|
|
82
|
+
property: background-color,
|
|
83
|
+
class: text-bg,
|
|
84
|
+
values: $theme-colors,
|
|
85
|
+
state: "text-bg"
|
|
86
|
+
),
|
|
87
|
+
"centos-border-color": (
|
|
88
|
+
property: border-color,
|
|
89
|
+
class: border,
|
|
90
|
+
values: $theme-colors,
|
|
91
|
+
state: "border"
|
|
92
|
+
),
|
|
93
|
+
"centos-bg-gradient": (
|
|
94
|
+
property: background,
|
|
95
|
+
class: bg-gradient,
|
|
96
|
+
values: $centos-bg-gradients
|
|
97
|
+
),
|
|
98
|
+
"centos-text-gradient": (
|
|
99
|
+
property: color,
|
|
100
|
+
class: text-gradient,
|
|
101
|
+
values: $centos-text-gradients,
|
|
102
|
+
),
|
|
103
|
+
)
|
|
104
|
+
);
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// ================================================================================
|
|
2
|
+
// SATURATION-NORMALIZED SHADE GENERATION
|
|
3
|
+
// ================================================================================
|
|
4
|
+
// Purpose: Generate color shades that maintain brand saturation throughout
|
|
5
|
+
// the entire range (light to dark), creating visual consistency between
|
|
6
|
+
// web UI and wallpapers.
|
|
7
|
+
//
|
|
8
|
+
// Background: Bootstrap's default shade-color() desaturates dark colors,
|
|
9
|
+
// making them look gray. This custom function maintains saturation for
|
|
10
|
+
// a unified brand experience aligned with wallpaper colors.
|
|
11
|
+
//
|
|
12
|
+
// Reference: Analyzed centos-background-p-1024x1024.png wallpaper to extract
|
|
13
|
+
// dark purple corners (#1A0029) which use 100% saturation at 16% brightness.
|
|
14
|
+
// Standard shade algorithm produces #210F1D (55% saturation) which feels gray.
|
|
15
|
+
// ================================================================================
|
|
16
|
+
|
|
17
|
+
@use "sass:color";
|
|
18
|
+
@use "sass:math";
|
|
19
|
+
|
|
20
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
// Function: Get saturation multiplier for a given shade grade
|
|
22
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// For dark shades (800-950), multiply saturation to prevent desaturation
|
|
24
|
+
// For medium shades (600-700), keep saturation as-is (already good)
|
|
25
|
+
// For light shades (50-400), reduce saturation for softer appearance on light bg
|
|
26
|
+
// For base shade (500), use normal saturation
|
|
27
|
+
//
|
|
28
|
+
// Option 2: Target wallpaper saturation (100%) for grade 950
|
|
29
|
+
// Using 2.0x multiplier to reach 100% from base ~50% saturation
|
|
30
|
+
@function saturation-multiplier($shade) {
|
|
31
|
+
@if $shade <= 400 {
|
|
32
|
+
@return 0.6; // Light shades (50-400): reduce saturation for soft appearance
|
|
33
|
+
} @else if $shade == 500 {
|
|
34
|
+
@return 1.0; // Base color: keep normal saturation
|
|
35
|
+
} @else if $shade == 600 {
|
|
36
|
+
@return 1.0; // Keep as-is, already perceptually good
|
|
37
|
+
} @else if $shade == 700 {
|
|
38
|
+
@return 1.0; // Keep as-is, already perceptually good
|
|
39
|
+
} @else if $shade == 800 {
|
|
40
|
+
@return 1.1; // Subtle boost for slight vibrancy increase
|
|
41
|
+
} @else if $shade == 900 {
|
|
42
|
+
@return 1.8; // Significant increase to match wallpaper saturation
|
|
43
|
+
} @else if $shade == 950 {
|
|
44
|
+
@return 2.0; // Ensure 100% saturation for all colors (wallpaper-anchored)
|
|
45
|
+
} @else {
|
|
46
|
+
@return 1.0; // Default fallback
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
51
|
+
// Function: Calculate target lightness for a shade grade
|
|
52
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
53
|
+
// Returns the lightness percentage for each shade number (50-950)
|
|
54
|
+
// Creates smooth interpolation from light to dark
|
|
55
|
+
// Option 2: Target 8% lightness for grade 950 (matches wallpaper ~16% brightness)
|
|
56
|
+
@function target-lightness($shade, $base-lightness) {
|
|
57
|
+
@if $shade < 500 {
|
|
58
|
+
// Light shades: interpolate from 95% (very light) down to base lightness
|
|
59
|
+
@return $base-lightness + math.div(500 - $shade, 450) * (95% - $base-lightness);
|
|
60
|
+
} @else if $shade == 500 {
|
|
61
|
+
// Base color: return as-is
|
|
62
|
+
@return $base-lightness;
|
|
63
|
+
} @else if $shade == 600 or $shade == 700 or $shade == 800 {
|
|
64
|
+
// Grades 600-800: use original Bootstrap curve (down to 5%)
|
|
65
|
+
@return $base-lightness - math.div($shade - 500, 500) * ($base-lightness - 5%);
|
|
66
|
+
} @else if $shade == 900 {
|
|
67
|
+
// Grade 900: transition toward wallpaper lightness
|
|
68
|
+
@return $base-lightness - math.div(900 - 500, 500) * ($base-lightness - 10%);
|
|
69
|
+
} @else if $shade == 950 {
|
|
70
|
+
// Grade 950: target 8% lightness (wallpaper-aligned, matches #1A0029)
|
|
71
|
+
// All grade-950 colors use 8% lightness to match wallpaper depth
|
|
72
|
+
@return 8%;
|
|
73
|
+
} @else {
|
|
74
|
+
// Default fallback
|
|
75
|
+
@return $base-lightness - math.div($shade - 500, 500) * ($base-lightness - 5%);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
80
|
+
// Function: Generate saturation-normalized shade
|
|
81
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
82
|
+
// Main function that creates shades with maintained saturation
|
|
83
|
+
// Extracts HSL from base color, applies multipliers, returns HSL shade
|
|
84
|
+
// Special case: purple-950 returns wallpaper-anchored #1A0029 (exact match)
|
|
85
|
+
@function saturated-shade($color, $shade) {
|
|
86
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
87
|
+
// Function: Generate saturation-normalized shade with wallpaper alignment
|
|
88
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
89
|
+
// Design Principle: Grade-950 colors maintain native hues while achieving
|
|
90
|
+
// wallpaper aesthetic through shared saturation (100%) and lightness (~8%)
|
|
91
|
+
//
|
|
92
|
+
// Wallpaper Reference: #1A0029 (100% saturation, 8% lightness)
|
|
93
|
+
// Grade-950 Alignment: All colors achieve 100% saturation + 8% lightness
|
|
94
|
+
// Result: UI colors share wallpaper depth while maintaining brand identity
|
|
95
|
+
//
|
|
96
|
+
// Why function-based instead of hardcoded?
|
|
97
|
+
// - Maintains hue consistency within each color family
|
|
98
|
+
// - Preserves algorithmic cohesion across all 4 color families
|
|
99
|
+
// - Achieves wallpaper correlation through saturation/brightness alignment
|
|
100
|
+
// - Creates unified visual language respecting color family rules
|
|
101
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
102
|
+
|
|
103
|
+
// Extract current HSL values from the color
|
|
104
|
+
$current-hue: hue($color);
|
|
105
|
+
$current-saturation: saturation($color);
|
|
106
|
+
$current-lightness: lightness($color);
|
|
107
|
+
|
|
108
|
+
// Calculate target values for this shade
|
|
109
|
+
$target-light: target-lightness($shade, $current-lightness);
|
|
110
|
+
$sat-multiplier: saturation-multiplier($shade);
|
|
111
|
+
$target-saturation: math.min($current-saturation * $sat-multiplier, 100%);
|
|
112
|
+
|
|
113
|
+
// Generate and return the new color in HSL
|
|
114
|
+
@return hsl($current-hue, $target-saturation, $target-light);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ================================================================================
|
|
118
|
+
// CentOS Color (Our beloved branding colors)
|
|
119
|
+
// ================================================================================
|
|
120
|
+
$centos-base-colors: (
|
|
121
|
+
centos-purple: #A14F8C,
|
|
122
|
+
centos-orange: #EFA724,
|
|
123
|
+
centos-blue: #262577,
|
|
124
|
+
centos-green: #9CCD2A,
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
// Define the shade steps.
|
|
128
|
+
$centos-color-shades: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950;
|
|
129
|
+
|
|
130
|
+
// --------------------------------------------------------------------------------
|
|
131
|
+
// Theme Colors - Option D: Orange Family Variants for Brand Coherence
|
|
132
|
+
// All colors verified to meet WCAG 2.1 standards with color theory compliance.
|
|
133
|
+
//
|
|
134
|
+
// CentOS brand colors are directly integrated as semantic colors to reinforce
|
|
135
|
+
// brand identity and follow international color standards (ISO 3864). Warning
|
|
136
|
+
// uses a darkened centos-orange variant to communicate caution urgency while
|
|
137
|
+
// maintaining brand coherence. Success uses darkened centos-green for positive
|
|
138
|
+
// outcomes. Brand colors remain from official CentOS specification.
|
|
139
|
+
//
|
|
140
|
+
// Color Theory Rationale:
|
|
141
|
+
// - Orange = Caution/Warning (warm, attention-getting, ISO standard)
|
|
142
|
+
// - Blue = Information (cool, trustworthy, ISO standard)
|
|
143
|
+
// - Red = Danger (alert, critical, ISO standard)
|
|
144
|
+
// - Green = Success (positive, safe, ISO standard)
|
|
145
|
+
// - Purple = Brand primary (custom, strong visual identity)
|
|
146
|
+
//
|
|
147
|
+
// Mapping:
|
|
148
|
+
// - Primary: centos-purple #A54C93 (brand primary - balanced for visual prominence)
|
|
149
|
+
// - Secondary: centos-orange #B27800 (brand secondary - balanced for color harmony)
|
|
150
|
+
// - Success: centos-green #4A8400 darkened (positive outcomes, from #84B800)
|
|
151
|
+
// - Warning: centos-orange #C86A00 darkened (caution/attention, warm tone - correct psychology)
|
|
152
|
+
// - Danger: External red #C62828 (critical/destructive - no CentOS equivalent)
|
|
153
|
+
// - Info: External blue #1976D2 (informational - distinguishes from warning)
|
|
154
|
+
//
|
|
155
|
+
// See color.md documentation for detailed contrast ratio and psychology analysis.
|
|
156
|
+
// --------------------------------------------------------------------------------
|
|
157
|
+
$primary: map-get($centos-base-colors, 'centos-purple');
|
|
158
|
+
$secondary: map-get($centos-base-colors, 'centos-orange'); // #B27800 - CentOS brand secondary
|
|
159
|
+
$success: #4A8400; // Darkened centos-green: 4.57:1 (white), 4.59:1 (black) - WCAG AA ✓
|
|
160
|
+
$warning: #C86A00; // Darkened centos-orange: 3.81:1 (white), 8.21:1 (black) - warm, urgent
|
|
161
|
+
$danger: #C62828; // External red: 5.39:1 (white), 3.89:1 (black) - WCAG AA ✓
|
|
162
|
+
$info: #1976D2; // External blue: 4.60:1 (white), 4.56:1 (black) - WCAG AA ✓
|
|
163
|
+
|
|
164
|
+
// Light and dark are automatically generated from centos-purple using the saturation-normalized
|
|
165
|
+
// shade system. Instead of assigning function results to variables here (which causes Dart Sass
|
|
166
|
+
// chicken-egg issues), we generate these values with a Python script and import them below.
|
|
167
|
+
// This ensures $light and $dark are consistently computed from the same shade algorithm used
|
|
168
|
+
// for all other shades in the color system.
|
|
169
|
+
//
|
|
170
|
+
// To update after color changes: python3 scripts/colors/generate-scss-light-dark.py
|
|
171
|
+
// The generated values are imported from: src/SASS/_light-dark.scss
|
|
172
|
+
@import "light-dark";
|
|
173
|
+
|
|
174
|
+
$white: #ffffff;
|
|
175
|
+
$black: #000000;
|
|
176
|
+
|
|
177
|
+
// Background and Body variables
|
|
178
|
+
// These control the default background and text colors for the entire page.
|
|
179
|
+
$body-bg: $white;
|
|
180
|
+
$body-color: #1c0d19; // centos-purple-900
|
|
181
|
+
|
|
182
|
+
// Border and Emphasis colors
|
|
183
|
+
// Used for borders, dividers, and higher-contrast text.
|
|
184
|
+
$border-color: #e8d9e5; // centos-purple-100
|
|
185
|
+
$emphasis-color: #d1b3cb; // centos-purple-200
|
|
186
|
+
|
|
187
|
+
// Dropdown menu
|
|
188
|
+
$dropdown-dark-bg: $dark;
|
|
189
|
+
$dropdown-dark-color: $light;
|
|
190
|
+
|
|
191
|
+
// --------------------------------------------------------------------------------
|
|
192
|
+
// Spacing customization
|
|
193
|
+
// --------------------------------------------------------------------------------
|
|
194
|
+
$spacer: 1rem;
|
|
195
|
+
$spacers: (
|
|
196
|
+
0: 0,
|
|
197
|
+
1: $spacer * .25,
|
|
198
|
+
2: $spacer * .5,
|
|
199
|
+
3: $spacer,
|
|
200
|
+
4: $spacer * 1.5,
|
|
201
|
+
5: $spacer * 3,
|
|
202
|
+
6: $spacer * 5,
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
// --------------------------------------------------------------------------------
|
|
206
|
+
// Typography
|
|
207
|
+
// --------------------------------------------------------------------------------
|
|
208
|
+
$font-family-sans-serif: "Montserrat", sans-serif;
|
|
209
|
+
$font-family-monospace: "Source Code Pro", monospace;
|
|
210
|
+
$headings-font-weight: 700;
|
|
211
|
+
$font-size-base: $spacer;
|
|
212
|
+
$h1-font-size: $font-size-base * 2.75;
|
|
213
|
+
$body-emphasis-color: mix(#000, $body-color, 15%);
|
|
214
|
+
|
|
215
|
+
// --------------------------------------------------------------------------------
|
|
216
|
+
// Breadcrumb
|
|
217
|
+
// --------------------------------------------------------------------------------
|
|
218
|
+
$breadcrumb-divider: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8'><path d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z'/></svg>");
|
|
219
|
+
|
|
220
|
+
// --------------------------------------------------------------------------------
|
|
221
|
+
// Negative margins
|
|
222
|
+
// --------------------------------------------------------------------------------
|
|
223
|
+
$enable-negative-margins: true;
|
|
224
|
+
|
|
225
|
+
// --------------------------------------------------------------------------------
|
|
226
|
+
// Breakingnews
|
|
227
|
+
// --------------------------------------------------------------------------------
|
|
228
|
+
// Use a Sass variable for the breaking news height to make it easy to update
|
|
229
|
+
// both the body padding and the sticky element's top position. If you change
|
|
230
|
+
// this value, you also need to tune-up the _includes/head.html file, where
|
|
231
|
+
// dynamic calculation of scroll-margin-top property takes place.
|
|
232
|
+
$breakingnews-height: 59px;
|