Compare commits
47 Commits
045cf86814
...
ac5a0ea9d5
@ -1,3 +0,0 @@ |
|||
[submodule "themes/itix"] |
|||
path = themes/itix |
|||
url = https://github.com/nmasse-itix/hugo-theme-itix.git |
|||
@ -0,0 +1,21 @@ |
|||
MIT License |
|||
|
|||
Copyright (c) 2020 Nicolas Massé |
|||
|
|||
Permission is hereby granted, free of charge, to any person obtaining a copy |
|||
of this software and associated documentation files (the "Software"), to deal |
|||
in the Software without restriction, including without limitation the rights |
|||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|||
copies of the Software, and to permit persons to whom the Software is |
|||
furnished to do so, subject to the following conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be included in all |
|||
copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
|||
SOFTWARE. |
|||
@ -0,0 +1,62 @@ |
|||
/* Generated using: hugo gen chromastyles --style=borland */ |
|||
|
|||
/* Background */ .bg { background-color:#fff; } |
|||
/* PreWrapper */ .chroma { background-color:#fff;-webkit-text-size-adjust:none; } |
|||
/* Error */ .chroma .err { color:#a61717;background-color:#e3d2d2 } |
|||
/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit } |
|||
/* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; } |
|||
/* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; } |
|||
/* LineHighlight */ .chroma .hl { background-color:#e5e5e5 } |
|||
/* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } |
|||
/* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f } |
|||
/* Line */ .chroma .line { display:flex; } |
|||
/* Keyword */ .chroma .k { color:#000080;font-weight:bold } |
|||
/* KeywordConstant */ .chroma .kc { color:#000080;font-weight:bold } |
|||
/* KeywordDeclaration */ .chroma .kd { color:#000080;font-weight:bold } |
|||
/* KeywordNamespace */ .chroma .kn { color:#000080;font-weight:bold } |
|||
/* KeywordPseudo */ .chroma .kp { color:#000080;font-weight:bold } |
|||
/* KeywordReserved */ .chroma .kr { color:#000080;font-weight:bold } |
|||
/* KeywordType */ .chroma .kt { color:#000080;font-weight:bold } |
|||
/* NameAttribute */ .chroma .na { color:#f00 } |
|||
/* NameTag */ .chroma .nt { color:#000080;font-weight:bold } |
|||
/* LiteralString */ .chroma .s { color:#00f } |
|||
/* LiteralStringAffix */ .chroma .sa { color:#00f } |
|||
/* LiteralStringBacktick */ .chroma .sb { color:#00f } |
|||
/* LiteralStringChar */ .chroma .sc { color:#800080 } |
|||
/* LiteralStringDelimiter */ .chroma .dl { color:#00f } |
|||
/* LiteralStringDoc */ .chroma .sd { color:#00f } |
|||
/* LiteralStringDouble */ .chroma .s2 { color:#00f } |
|||
/* LiteralStringEscape */ .chroma .se { color:#00f } |
|||
/* LiteralStringHeredoc */ .chroma .sh { color:#00f } |
|||
/* LiteralStringInterpol */ .chroma .si { color:#00f } |
|||
/* LiteralStringOther */ .chroma .sx { color:#00f } |
|||
/* LiteralStringRegex */ .chroma .sr { color:#00f } |
|||
/* LiteralStringSingle */ .chroma .s1 { color:#00f } |
|||
/* LiteralStringSymbol */ .chroma .ss { color:#00f } |
|||
/* LiteralNumber */ .chroma .m { color:#00f } |
|||
/* LiteralNumberBin */ .chroma .mb { color:#00f } |
|||
/* LiteralNumberFloat */ .chroma .mf { color:#00f } |
|||
/* LiteralNumberHex */ .chroma .mh { color:#00f } |
|||
/* LiteralNumberInteger */ .chroma .mi { color:#00f } |
|||
/* LiteralNumberIntegerLong */ .chroma .il { color:#00f } |
|||
/* LiteralNumberOct */ .chroma .mo { color:#00f } |
|||
/* OperatorWord */ .chroma .ow { font-weight:bold } |
|||
/* Comment */ .chroma .c { color:#080;font-style:italic } |
|||
/* CommentHashbang */ .chroma .ch { color:#080;font-style:italic } |
|||
/* CommentMultiline */ .chroma .cm { color:#080;font-style:italic } |
|||
/* CommentSingle */ .chroma .c1 { color:#080;font-style:italic } |
|||
/* CommentSpecial */ .chroma .cs { color:#080;font-weight:bold } |
|||
/* CommentPreproc */ .chroma .cp { color:#008080 } |
|||
/* CommentPreprocFile */ .chroma .cpf { color:#008080 } |
|||
/* GenericDeleted */ .chroma .gd { color:#000;background-color:#fdd } |
|||
/* GenericEmph */ .chroma .ge { font-style:italic } |
|||
/* GenericError */ .chroma .gr { color:#a00 } |
|||
/* GenericHeading */ .chroma .gh { color:#999 } |
|||
/* GenericInserted */ .chroma .gi { color:#000;background-color:#dfd } |
|||
/* GenericOutput */ .chroma .go { color:#888 } |
|||
/* GenericPrompt */ .chroma .gp { color:#555 } |
|||
/* GenericStrong */ .chroma .gs { font-weight:bold } |
|||
/* GenericSubheading */ .chroma .gu { color:#aaa } |
|||
/* GenericTraceback */ .chroma .gt { color:#a00 } |
|||
/* GenericUnderline */ .chroma .gl { text-decoration:underline } |
|||
/* TextWhitespace */ .chroma .w { color:#bbb } |
|||
@ -0,0 +1,859 @@ |
|||
:root { |
|||
/* |
|||
* Theme colors |
|||
*/ |
|||
--main-color: #1870c9; /* Adjusted to ensure a 4.5:1 contrast ratio for accessibility */ |
|||
--main-background-color: #fcfcfc; |
|||
--alternate-text-color: #145ca4; |
|||
--main-text-color: #092949; /* 50% darker than main-color */ |
|||
--active-menu-background-color: #f4f8fb; |
|||
--active-menu-color: #0e4377; |
|||
--active-menu-border-color: #74abe3; |
|||
--hover-menu-background-color: #f4f8fb; |
|||
--hover-menu-color: #0e4377; |
|||
--hover-menu-border-color: #74abe3; |
|||
--post-metadata-color: #555; |
|||
--text-selection-background-color: #a2c7ec; |
|||
--quote-background-color: #f0f5fa; |
|||
--quote-border-color: #589bdd; |
|||
--codeblock-background-color: #ebf2f9; |
|||
--toc-background-color: #f0f5fa; |
|||
--pagination-disabled-color: #555; |
|||
--table-border-color: #092949; |
|||
|
|||
/* |
|||
* Layout |
|||
*/ |
|||
--menu-container-width: 25%; |
|||
--toolbar-container-width: 25%; |
|||
|
|||
/* |
|||
* Fonts |
|||
*/ |
|||
--default-font-list: "Source Serif Pro", serif; |
|||
--mono-font-list: "JetBrains Mono", monospace; |
|||
--sans-preferred-font-list: "Source Sans Pro", sans-serif; |
|||
|
|||
} |
|||
|
|||
/* |
|||
* Fonts |
|||
*/ |
|||
@font-face{ |
|||
font-family: 'JetBrains Mono'; |
|||
src: url('/fonts/JetBrainsMono-Regular.woff2') format('woff2'), |
|||
url('/fonts/JetBrainsMono-Regular.woff') format('woff'), |
|||
url('/fonts/JetBrainsMono-Regular.ttf') format('truetype'); |
|||
font-weight: 400; |
|||
font-style: normal; |
|||
|
|||
/* |
|||
* Core Web Vitals / Cumulative Layout Shift. |
|||
* |
|||
* Avoid showing invisible text while custom fonts load. |
|||
*/ |
|||
font-display: swap; |
|||
} |
|||
|
|||
@font-face{ |
|||
font-family: 'Source Serif Pro'; |
|||
src: url('/fonts/SourceSerifPro-Regular.ttf') format('truetype'); |
|||
font-weight: 400; |
|||
font-style: normal; |
|||
|
|||
/* |
|||
* Core Web Vitals / Cumulative Layout Shift. |
|||
* |
|||
* Avoid showing invisible text while custom fonts load. |
|||
*/ |
|||
font-display: swap; |
|||
} |
|||
|
|||
@font-face{ |
|||
font-family: 'Source Sans Pro'; |
|||
src: url('/fonts/SourceSansPro-Regular.ttf') format('truetype'); |
|||
font-weight: 400; |
|||
font-style: normal; |
|||
|
|||
/* |
|||
* Core Web Vitals / Cumulative Layout Shift. |
|||
* |
|||
* Avoid showing invisible text while custom fonts load. |
|||
*/ |
|||
font-display: swap; |
|||
} |
|||
|
|||
/* |
|||
* General settings |
|||
*/ |
|||
|
|||
::selection { |
|||
/* Text selection uses the theme main color with some transparency */ |
|||
background: var(--text-selection-background-color); |
|||
} |
|||
|
|||
body { |
|||
background: var(--main-background-color); |
|||
padding: 0; |
|||
margin: 0; |
|||
font-family: var(--default-font-list); |
|||
color: var(--main-text-color); |
|||
} |
|||
|
|||
* { |
|||
/* By default in the CSS box model, the width and height you assign to an |
|||
* element is applied only to the element's content box. If the element has |
|||
* any border or padding, this is then added to the width and height to arrive |
|||
* at the size of the box that's rendered on the screen. This means that when |
|||
* you set width and height, you have to adjust the value you give to allow |
|||
* for any border or padding that may be added. |
|||
* |
|||
* border-box tells the browser to account for any border and padding in the |
|||
* values you specify for an element's width and height. If you set an element's |
|||
* width to 100 pixels, that 100 pixels will include any border or padding you |
|||
* added, and the content box will shrink to absorb that extra width. |
|||
* This typically makes it much easier to size elements. |
|||
*/ |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
/* |
|||
* Heading and figure numbering |
|||
*/ |
|||
|
|||
main, #TableOfContents { |
|||
/* |
|||
* all counters need to be specified on one single line |
|||
* and they have to be reset on an enclosing element |
|||
*/ |
|||
counter-reset: h2 figcaption; |
|||
} |
|||
|
|||
h2::before, #TableOfContents > ul > li::before { |
|||
content: counter(h2) ".\0000a0\0000a0"; /* \0000a0 => Non-breakable space */ |
|||
counter-increment: h2; |
|||
} |
|||
|
|||
h2, #TableOfContents > ul > li { |
|||
counter-reset: h3; |
|||
} |
|||
|
|||
h3::before, #TableOfContents > ul > li > ul > li::before { |
|||
content: counter(h2) "." counter(h3) ".\0000a0\0000a0"; |
|||
counter-increment: h3; |
|||
} |
|||
|
|||
figcaption::before { |
|||
/* |
|||
* When the numbering is done in CSS, we cannot honor typographical |
|||
* conventions of the user language. So, here I chose the english convention |
|||
* with no space before the colon and a space after. |
|||
*/ |
|||
content: "Figure " counter(figcaption) ": "; |
|||
counter-increment: figcaption; |
|||
|
|||
} |
|||
|
|||
/* |
|||
* Main content formatting |
|||
*/ |
|||
|
|||
h1, h2, h3 { |
|||
font-weight: bold; |
|||
line-height: 1.5em; |
|||
} |
|||
|
|||
h1, h2, h3, h4, h5, h6 { |
|||
margin: 20px 0 20px 0; |
|||
} |
|||
|
|||
h1 { |
|||
font-size: 30px; |
|||
} |
|||
|
|||
h2 { |
|||
font-size: 24px; |
|||
} |
|||
|
|||
h3 { |
|||
font-size: 21px; |
|||
} |
|||
|
|||
h4 { |
|||
font-size: 21px; |
|||
} |
|||
|
|||
h5 { |
|||
font-size: 20px; |
|||
} |
|||
|
|||
h6 { |
|||
font-size: 19px; |
|||
} |
|||
|
|||
figure { |
|||
margin: 0; |
|||
} |
|||
|
|||
figure figcaption { |
|||
font-style: italic; |
|||
} |
|||
|
|||
ul { |
|||
list-style-type: "\2013\0000a0"; |
|||
list-style-position: outside; |
|||
} |
|||
|
|||
textarea, |
|||
select, |
|||
input, |
|||
button { |
|||
outline: none !important; |
|||
} |
|||
|
|||
main table { |
|||
table-layout: fixed; |
|||
overflow-x: scroll; |
|||
border-collapse: collapse; |
|||
width: 100%; |
|||
table-layout: auto; |
|||
} |
|||
|
|||
main table td, main table th { |
|||
border: 1px solid var(--table-border-color); |
|||
padding: 0.2rem 0.5rem; |
|||
} |
|||
|
|||
button { |
|||
cursor: pointer; |
|||
} |
|||
|
|||
blockquote { |
|||
padding: 10px 20px; |
|||
border-left: 3px solid var(--quote-border-color); |
|||
color: var(--alternate-text-color); |
|||
background: var(--quote-background-color); |
|||
} |
|||
|
|||
blockquote p { |
|||
margin-bottom: 0; |
|||
} |
|||
|
|||
blockquote * { |
|||
color: var(--alternate-text-color); |
|||
} |
|||
|
|||
a { |
|||
color: var(--main-color); |
|||
} |
|||
|
|||
a:hover { |
|||
color: var(--alternate-text-color); |
|||
} |
|||
|
|||
/* |
|||
* Code block |
|||
*/ |
|||
|
|||
pre.chroma { |
|||
/* Overide the default chroma background color with ours */ |
|||
background: var(--codeblock-background-color); |
|||
} |
|||
|
|||
/* Code block (three backticks in markdown) */ |
|||
pre { |
|||
background: var(--codeblock-background-color); |
|||
padding: 12px 15px; |
|||
border-radius: 5px; |
|||
font-family: var(--mono-font-list); |
|||
|
|||
/* Do not wrap lines of code */ |
|||
overflow-x: hidden; |
|||
|
|||
/* Hide scrollbar for IE, Edge and Firefox */ |
|||
-ms-overflow-style: none; /* IE and Edge */ |
|||
scrollbar-width: none; /* Firefox */ |
|||
} |
|||
|
|||
/* Hide scrollbar for Chrome, Safari and Opera */ |
|||
pre::-webkit-scrollbar { |
|||
display: none; |
|||
} |
|||
|
|||
/* Inline code (single backticks in markdown) */ |
|||
code { |
|||
color: var(--alternate-text-color); |
|||
background: var(--codeblock-background-color) !important; |
|||
padding: 2px 5px; |
|||
border-radius: 3px; |
|||
font-family: var(--mono-font-list); |
|||
} |
|||
|
|||
/* |
|||
* And because there is a code tag inside a pre tag for Markdown code blocks, |
|||
* we need to overide some properties |
|||
*/ |
|||
pre code { |
|||
background: none !important; |
|||
font-family: var(--mono-font-list) !important; |
|||
padding: 0; |
|||
} |
|||
|
|||
/* |
|||
* Highlighted file has a wrapping div. Some properties are redefined for it |
|||
* and reset to their default value for its children. |
|||
*/ |
|||
.highlightedFile { |
|||
background: var(--codeblock-background-color); |
|||
border-radius: 5px; |
|||
} |
|||
|
|||
.highlightedFile .filename { |
|||
border-bottom: 2px solid var(--hover-menu-border-color); |
|||
font-family: var(--sans-preferred-font-list) !important; |
|||
font-size: larger; |
|||
padding: 12px 15px; |
|||
} |
|||
|
|||
.highlightedFile pre { |
|||
background: inherit; |
|||
border-radius: inherit; |
|||
padding: 12px 15px; |
|||
margin: 0; |
|||
} |
|||
|
|||
|
|||
pre:hover { |
|||
/* Show the horizontal scroll bar when hovering code (if needed) */ |
|||
overflow-x: auto; |
|||
} |
|||
|
|||
/* |
|||
* i18n |
|||
*/ |
|||
.tiny-flag { |
|||
vertical-align: middle; |
|||
margin-left: 5px; |
|||
margin-right: 5px; |
|||
} |
|||
|
|||
/* |
|||
* Pagination |
|||
*/ |
|||
.pagination { |
|||
list-style: none; |
|||
padding: 0; |
|||
text-align: center; |
|||
font-size: larger; |
|||
} |
|||
|
|||
.pagination .page-item { |
|||
display: inline; |
|||
margin: 5px; |
|||
} |
|||
|
|||
.pagination .disabled { |
|||
color: var(--pagination-disabled-color); |
|||
} |
|||
|
|||
.pagination .active { |
|||
font-weight: bold; |
|||
} |
|||
|
|||
/* |
|||
* Article list |
|||
*/ |
|||
|
|||
.article-list p { |
|||
/* Move the excerpt closer to the metadata */ |
|||
margin-top: 0.5em; |
|||
/* Add spacing around each item of the list */ |
|||
margin-bottom: 2.5em; |
|||
} |
|||
|
|||
.article-list h4 { |
|||
/* Move the title closer to the metadata */ |
|||
margin-bottom: 0.5em; |
|||
} |
|||
|
|||
.article-list .post-metadata { |
|||
/* Fade the metadata */ |
|||
color: var(--post-metadata-color); |
|||
} |
|||
|
|||
.article-list .continue-reading { |
|||
/* Leave some space between the excerpt and the "continue reading" link */ |
|||
margin-left: 0.5em; |
|||
} |
|||
|
|||
/* |
|||
* Post Metadata (valid for the "list" and "single" views) |
|||
*/ |
|||
.post-metadata .material-icons { |
|||
vertical-align: sub; |
|||
margin-right: 3px; |
|||
margin-left: 5px; |
|||
max-height: 1rem; |
|||
} |
|||
|
|||
.post-metadata time { |
|||
/* Leave some space between publication date and taxonomies */ |
|||
margin-right: 20px; |
|||
} |
|||
|
|||
|
|||
article .post-metadata { |
|||
/* Leave some space between the metadata and the title */ |
|||
margin-top: 20px; |
|||
} |
|||
|
|||
/* |
|||
* Single post layout |
|||
*/ |
|||
article { |
|||
padding: 50px 35px 20px 35px; |
|||
font-size: 16px; |
|||
line-height: 1.5em; |
|||
} |
|||
|
|||
article img, article video { |
|||
max-width: 100%; |
|||
height: auto; |
|||
border-radius: 5px; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
article p { |
|||
text-align: justify; |
|||
text-justify: inter-word; |
|||
} |
|||
|
|||
article header { |
|||
padding-bottom: 30px; |
|||
font-style: normal; |
|||
line-height: 1.5em; |
|||
|
|||
/* Align the site title with the article title */ |
|||
padding-top: 11px; |
|||
} |
|||
|
|||
/* Article title */ |
|||
article header h1 { |
|||
font-size: 30px; |
|||
margin: 0; |
|||
} |
|||
|
|||
/* Article subtitle */ |
|||
article header h4 { |
|||
font-size: 18px; |
|||
opacity: 0.6; |
|||
padding: 0px 0 8px 0; |
|||
} |
|||
|
|||
/* |
|||
* Menu (left side) |
|||
*/ |
|||
.menu-lang { |
|||
padding-right: 28px; |
|||
} |
|||
|
|||
.menu-head, .menu-link-list a, .menu-head:hover, .menu-link-list a:hover { |
|||
display: block; |
|||
text-decoration: none !important; |
|||
cursor: pointer; |
|||
border-right: 2px solid transparent; |
|||
} |
|||
|
|||
.menu-head.active, .menu-link-list a.active { |
|||
border-right: 2px solid var(--active-menu-border-color); |
|||
background: var(--active-menu-background-color); |
|||
color: var(--active-menu-color); |
|||
} |
|||
|
|||
.menu-head:hover, .menu-link-list a:hover { |
|||
border-right: 2px solid var(--hover-menu-border-color); |
|||
background: var(--hover-menu-background-color); |
|||
color: var(--hover-menu-color); |
|||
} |
|||
|
|||
.menu-footer { |
|||
padding: 20px 30px 0 20px; |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.menu-head { |
|||
padding: 30px 28px 30px 20px; |
|||
margin-bottom: 10px; |
|||
color: var(--main-text-color); |
|||
} |
|||
|
|||
.menu-title { |
|||
--menu-title-size: 30px; |
|||
font-size: var(--menu-title-size); |
|||
line-height: calc(var(--menu-title-size) * 1.4); |
|||
} |
|||
|
|||
.menu-subtitle { |
|||
margin-top: 8px; |
|||
font-size: 18px; |
|||
} |
|||
|
|||
|
|||
.menu-link-list { |
|||
flex-grow: 1; |
|||
} |
|||
|
|||
.menu-link-list a { |
|||
font-size: 20px; |
|||
margin-bottom: 10px; |
|||
padding: 8px 28px 8px 30px; |
|||
color: var(--main-text-color); |
|||
} |
|||
|
|||
.menu-content { |
|||
position: fixed; |
|||
top: 0; |
|||
height: 100vh; |
|||
width: var(--menu-container-width); |
|||
text-align: right; |
|||
font-family: var(--sans-preferred-font-list); |
|||
padding: 20px 0 50px 0; |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: space-between; |
|||
|
|||
/* Below the hamburger menu but on top of the overlay */ |
|||
z-index: 253; |
|||
} |
|||
|
|||
/* |
|||
* Hamburger menu |
|||
*/ |
|||
.menu input.hamburger-menu { |
|||
display: block; |
|||
width: 80px; |
|||
height: 72px; |
|||
position: fixed; |
|||
top: 0px; |
|||
left: 0px; |
|||
margin: 0; |
|||
|
|||
cursor: pointer; |
|||
|
|||
opacity: 0; /* hide this */ |
|||
z-index: 255; /* and place it over the hamburger */ |
|||
|
|||
-webkit-touch-callout: none; |
|||
} |
|||
|
|||
/* |
|||
* Draw the hamburger |
|||
*/ |
|||
.menu div.hamburger-menu { |
|||
width: 32px; |
|||
height: 4px; |
|||
position: fixed; |
|||
left: 24px; |
|||
|
|||
background: var(--main-text-color); |
|||
border-radius: 3px; |
|||
|
|||
z-index: 254; |
|||
|
|||
transform-origin: center; |
|||
transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0), |
|||
opacity 0.55s ease; |
|||
} |
|||
|
|||
.menu div.hamburger-menu:nth-child(2) { |
|||
top: 25px; |
|||
} |
|||
|
|||
.menu div.hamburger-menu:nth-child(3) { |
|||
top: 34px; |
|||
} |
|||
|
|||
.menu div.hamburger-menu:nth-child(4) { |
|||
top: 43px; |
|||
} |
|||
|
|||
/* Transform all the slices of hamburger into a crossmark. */ |
|||
.menu input.hamburger-menu:checked ~ div.hamburger-menu:nth-child(2) { |
|||
opacity: 1; |
|||
transform: translate(0, 9px) rotate(45deg); |
|||
} |
|||
|
|||
/* But let's hide the middle one. */ |
|||
.menu input.hamburger-menu:checked ~ div.hamburger-menu:nth-child(3) { |
|||
opacity: 0; |
|||
transform: rotate(0deg) scale(0.2, 0.2); |
|||
} |
|||
|
|||
/* And the last one should go the other direction */ |
|||
.menu input.hamburger-menu:checked ~ div.hamburger-menu:nth-child(4) { |
|||
transform: translate(0, -9px) rotate(-45deg); |
|||
} |
|||
|
|||
/* On mobile browsers, keep a title displayed on top */ |
|||
.menu .mobile-title { |
|||
padding: 20px 80px 20px 80px; |
|||
margin: 0; |
|||
width: 100%; |
|||
height: 80px; |
|||
line-height: 40px; /* line-height = height - padding-top - padding-bottom */ |
|||
text-align: center; |
|||
font-size: calc(var(--heading1-size) - 3 * var(--heading-diff)); |
|||
font-weight: bold; |
|||
position: fixed; |
|||
box-shadow: 0 0 16px rgba(0, 0, 0, 0.12); |
|||
background-color: var(--main-background-color); |
|||
} |
|||
|
|||
/* But hide them by default. They will be uncovered when needed by media queries */ |
|||
.menu .hamburger-menu, .menu .mobile-title { |
|||
display: none; |
|||
} |
|||
|
|||
/* |
|||
* Toolbar (right side) |
|||
*/ |
|||
.toolbar { |
|||
position: fixed; |
|||
top: 0; |
|||
right: 0; |
|||
width: var(--toolbar-container-width); |
|||
font-family: var(--sans-preferred-font-list); |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: flex-end; |
|||
} |
|||
|
|||
.actions { |
|||
position: fixed; |
|||
bottom: 0; |
|||
display: flex; |
|||
flex-direction: row; |
|||
margin-bottom: 50px; |
|||
margin-left: 30px; |
|||
} |
|||
|
|||
.actions .action { |
|||
display: flex; |
|||
flex-direction: column; |
|||
cursor: pointer; |
|||
margin-right: 10px; |
|||
} |
|||
|
|||
.actions a { |
|||
text-decoration: none; |
|||
color: var(--main-text-color); |
|||
} |
|||
|
|||
.actions a:visited { |
|||
color: var(--main-text-color); |
|||
} |
|||
|
|||
.actions .material-icons { |
|||
height: 2rem; |
|||
width: auto; |
|||
} |
|||
|
|||
/* |
|||
* Search page |
|||
*/ |
|||
.search input { |
|||
width: 100%; |
|||
} |
|||
|
|||
@media screen { |
|||
/* |
|||
* Main part of the page (center) |
|||
* |
|||
* Enclosed in @media screen block because this style is not desired for |
|||
* printing. |
|||
*/ |
|||
main { |
|||
padding-left: var(--menu-container-width); |
|||
padding-right: var(--toolbar-container-width); |
|||
width: 100%; |
|||
|
|||
min-height: 100vh; |
|||
} |
|||
|
|||
/* Immediate children of main gets a left/right shadow */ |
|||
main > * { |
|||
box-shadow: 0 0 16px rgba(0, 0, 0, 0.12); |
|||
min-height: 100vh; |
|||
} |
|||
} |
|||
|
|||
/* |
|||
* Table of content (within the toolbar on the right) |
|||
*/ |
|||
.toc { |
|||
float: right; |
|||
border-radius: 5px; |
|||
margin-left: 30px; |
|||
margin-right: 60px; |
|||
margin-top: 30px; |
|||
max-width: 260px; |
|||
max-height: 80vh; |
|||
overflow: auto; |
|||
background: var(--toc-background-color); |
|||
padding: 20px; |
|||
font-size: 16px; |
|||
} |
|||
|
|||
.toc ul { |
|||
list-style: none; |
|||
padding: 0; |
|||
margin: 0; |
|||
line-height: 1.7em; |
|||
} |
|||
|
|||
.toc h4 { |
|||
text-align: center; |
|||
margin: 0 0 10px 0; |
|||
} |
|||
|
|||
/* Mathjax container */ |
|||
mjx-container { |
|||
overflow-y: hidden !important; |
|||
} |
|||
|
|||
/* |
|||
* Reactive tweaks |
|||
*/ |
|||
@media screen and (max-width: 1440px) { |
|||
:root { |
|||
--menu-container-width: 20%; |
|||
} |
|||
} |
|||
|
|||
@media screen and (max-width: 1280px) { |
|||
.toc { |
|||
display: none; |
|||
} |
|||
:root { |
|||
--toolbar-container-width: 5%; |
|||
} |
|||
} |
|||
|
|||
@media screen and (max-width: 1140px) { |
|||
article { |
|||
padding: 30px 20px 20px 20px; |
|||
} |
|||
|
|||
main { |
|||
padding: 0; |
|||
min-height: unset; |
|||
} |
|||
|
|||
.toolbar { |
|||
display: none; |
|||
} |
|||
|
|||
.toc { |
|||
line-height: 2em; |
|||
float: none; |
|||
margin-top: 30px; |
|||
margin-left: 0; |
|||
margin-right: 0; |
|||
} |
|||
|
|||
/* |
|||
* On mobile devices, there are no :hover events. So we must always |
|||
* propose horizontal scrollbars when needed. |
|||
*/ |
|||
pre { |
|||
overflow-x: auto; |
|||
} |
|||
|
|||
.menu .hamburger-menu, .menu .mobile-title { |
|||
display: block; |
|||
} |
|||
|
|||
/* |
|||
* On mobile, leave some room above the article so that the title + hamburger |
|||
* menu do not hide the article title. |
|||
*/ |
|||
main > *:first-child { |
|||
padding-top: 110px; |
|||
} |
|||
|
|||
.menu .menu-content { |
|||
width: 300px; |
|||
left: -300px; |
|||
height: 100vh; |
|||
background-color: var(--main-background-color); |
|||
position: fixed; |
|||
transform: none; |
|||
transition: transform 0.2s linear; |
|||
} |
|||
|
|||
.menu .menu-overlay { |
|||
display: block; |
|||
position: fixed; |
|||
top: 0; |
|||
left: 0; |
|||
width: 100vw; |
|||
height: 100vh; |
|||
transition: background-color 0.2s linear; |
|||
|
|||
/* |
|||
* Put the overlay on the bottom of the stack so that it does not catch |
|||
* click events. |
|||
*/ |
|||
z-index: -1; |
|||
} |
|||
|
|||
|
|||
/* |
|||
* When the hamburger menu is clicked, show the menu content and enable |
|||
* the overlay that hides the article content. |
|||
*/ |
|||
.menu input.hamburger-menu:checked ~ .menu-content { |
|||
transform: translate(300px, 0); |
|||
} |
|||
|
|||
.menu input.hamburger-menu:checked ~ .menu-overlay { |
|||
/* Semi transparent background */ |
|||
background-color: rgba(0, 0, 0, 0.5); |
|||
|
|||
/* Below the hamburger menu, the menu content but over the article content */ |
|||
z-index: 250; |
|||
} |
|||
|
|||
/* |
|||
* Leave some room between the list items in the term pages so that it is |
|||
* easier to click on mobile. Also makes Google happy. |
|||
*/ |
|||
.terms ul li { |
|||
line-height: 2em; |
|||
} |
|||
} |
|||
|
|||
@media screen and (max-width: 512px) { |
|||
/* |
|||
* On mobile, hide some post metadata |
|||
*/ |
|||
.post-metadata .opensource, .post-metadata .topic, .post-metadata .reading-time { |
|||
display: none; |
|||
} |
|||
} |
|||
|
|||
/* |
|||
* Tweaks for printing |
|||
*/ |
|||
@media print { |
|||
.menu, .menu-content, .hamburger-menu, .toolbar { |
|||
display: none !important; |
|||
} |
|||
|
|||
/* Since you cannot scroll horizontally on a paper, wrap the code blocks */ |
|||
pre { |
|||
white-space: pre-wrap; |
|||
word-break: break-all; |
|||
word-wrap: break-word; |
|||
} |
|||
} |
|||
@ -0,0 +1,3 @@ |
|||
--- |
|||
title: "Articles" |
|||
--- |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/counting-scheme-dry-run.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:2ff6860a11084f46c66a6a97b894bd2d862926cf0c9556713d40930f4201e4f1 |
|||
size 46993 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/counting-scheme-no-time.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:7140091b707a1c40b560242d3177f3e078540836ab699228f99ac421f6445287 |
|||
size 160790 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/counting-scheme-with-time.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:3bae94879ffedec0bf6298e8d2ca24b79401e78b9ef2055cb8d2f2d0ed3cdf0d |
|||
size 155225 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/exercise-validation.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:f26b11e956df0f72af3aa6391edb86d603872ca48614bb6ec599f990a0d58bde |
|||
size 86022 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/grafana-explore-opencodequest-leaderboard-hero.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:bb1abcb74778fb7082811410777496acce38676af018a58af78bbbf68cfda464 |
|||
size 150430 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/grafana-opencodequest-leaderboard-instant-snapshot.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:c505527895a78b1f1ced45259e668701c7ed32c032ba7a522becc3e6e4530deb |
|||
size 126683 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/grafana-opencodequest-leaderboard-lifetime-bonus.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:43315418672bc1cd7d6fb791e3fe5f4dfc1ecf49f0503183f3bc679fb5a413db |
|||
size 73438 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/grafana-opencodequest-leaderboard-onetime-bonus.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:ddf5ac592a481defc683c867d4d2f64f49be843d690447377537c8ef9f8df3c6 |
|||
size 102237 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/grafana-opencodequest-leaderboard-points-over-time.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:05a25085da5f7eddec3bccf11648253018fc6541e5a09363c36cdf753c7215ba |
|||
size 103501 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/grafana-opencodequest-leaderboard.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:bc019d5c67817b9e9865a151dc6e9e82d642d68f6837372d86986ca42b0ebde1 |
|||
size 135029 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/grafana-opencodequest-points.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:a1f2e71acbdd905e58dbd69f0e7e05e431b3131e69c393fe1811c82d68ec6356 |
|||
size 435109 |
|||
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 1.8 MiB |
@ -1 +0,0 @@ |
|||
../../../french/blog/behind-the-scenes-at-open-code-quest-how-i-implemented-leaderboard-with-acm/redhat-acm-observability-architecture.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:2c45426fa458b790c4c075e2a69ebc3d31eba85c568ab638a3b3396f59fb3d12 |
|||
size 944177 |
|||
|
Before Width: | Height: | Size: 138 B After Width: | Height: | Size: 936 KiB |
|
Before Width: | Height: | Size: 138 B After Width: | Height: | Size: 936 KiB |
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/aws-console-efs.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:9dbf6db819810a2548089b283c823c972ecefc228b052c7bcb66a72784e8539f |
|||
size 87604 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/aws-console-security-group.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:1631bfcd754ee801fd46a2062d24284ed9485e479796dd616a9bc3990b6b88ae |
|||
size 137321 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/openshift-console-three-nodes-x86_64-and-arm64.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:c8c5d9c7d7d1b6b9f132bc127cff576d7a5eba1ae00dfea10ecaf1de7c06e9bf |
|||
size 77593 |
|||
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 93 KiB |
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/quay-image-containerfile.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:5cfc3858a68d16f6a8f85dc9ba6d31a8b97ace492d7e89ce119030b7fdf38704 |
|||
size 75012 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/sources |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/tekton-pipeline-containerfile.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:8aa152d6493ba7e3750f8f11918ca9e1fba179a2bf2a4cefb7879a1c1a8223e8 |
|||
size 106228 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/tekton-pipeline-nodejs.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:080bd61cdc84c0cefdcd510d7cf1dc0b0cd0c10131b47fcb22b3b94c7cb5ba82 |
|||
size 121261 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/build-multi-architecture-container-images-with-kubernetes-buildah-tekton-aws/tekton-pipeline-quarkus.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:dbae60f9acc436edfd70d5b1be78a783c034ebb827f8ec59b7bfb6b10f698900 |
|||
size 117867 |
|||
@ -1 +0,0 @@ |
|||
../../../french/blog/homelab-server-2u-short-depth-front-io-ampere-altra-arm64-architecture/ampere-altra-q64-22.jpeg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:95ca7691b894fa2aeb4484b5776569c27c6de992ec15688072731344c4f85c62 |
|||
size 617530 |
|||
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 781 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 781 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 617 KiB |
|
Before Width: | Height: | Size: 110 B After Width: | Height: | Size: 617 KiB |
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 109 B After Width: | Height: | Size: 148 KiB |
@ -1 +0,0 @@ |
|||
../../../french/blog/homelab-server-2u-short-depth-front-io-ampere-altra-arm64-architecture/innovision-m24306.jpeg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:025ceaa0fba8be2362157ba1b5727b4a1eb0312bd290e20e89a81e421f1519f5 |
|||
size 144994 |
|||
|
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 819 KiB |
|
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 819 KiB |
|
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 778 KiB |
|
Before Width: | Height: | Size: 114 B After Width: | Height: | Size: 778 KiB |
@ -1 +0,0 @@ |
|||
../../../french/blog/homelab-server-2u-short-depth-front-io-ampere-altra-arm64-architecture/nvme-storage.jpeg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:deb12323d1e403abfac6f3118b8005493b7b097ee49dee06d3af9b2dda24fd2f |
|||
size 368698 |
|||
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 113 B After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 104 B After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 798 KiB |
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 798 KiB |
@ -1 +0,0 @@ |
|||
../../../french/blog/homelab-server-2u-short-depth-front-io-ampere-altra-arm64-architecture/vga-not-connected.jpeg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:e7c022b7d7c350e4bff9920f77f5f27f833f22401c9a3ab31163069a43ada164 |
|||
size 318777 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/on-stage-1.jpg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:e67f33dd74983b701855fbe16fa14d8942ec6dc52f9009ab1e3d9232ca1ee3b1 |
|||
size 420606 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/on-stage-2.jpg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:cea4d491b1c594de96de49fcd43a59ee5a748a20ac5fa346fe8635459634ee78 |
|||
size 435621 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/on-stage-3.jpg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:7fdfdf7c8ea827a446ff1dbd0481e2f2cefe227c705e7a6368ec2a7aa719115b |
|||
size 399789 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/on-stage-4.jpg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:95b2fa7afb1eb149668c6359375e5aa24c8191e84ed97918407f27eef9a439f3 |
|||
size 429054 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/on-stage-5.jpg |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:b81ccd715d20f283126d48fff9b664b1b0c21df07f66d3bb43bd1ed8fe04b997 |
|||
size 394796 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/tweet-PetitMel_issa.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:30c34d95c648e3ea1b09e97abb4a938ea05d37c4f8a495b80cdf80178d6cda21 |
|||
size 303388 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/tweet-cgodard.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:83e27c09bb815e1cb70f41101f50520609626ebc8a295f5a8a17d0dd5055619a |
|||
size 245111 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/tweet-gbloquel.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:b814003522c97f4968a1e7bb7756000dd22371d3c7e283cb3c8fce07b57f25e7 |
|||
size 293865 |
|||
@ -1 +0,0 @@ |
|||
../../../french/speaking/devoxx-france-2019/tweet-lbroudoux.png |
|||
@ -0,0 +1,3 @@ |
|||
version https://git-lfs.github.com/spec/v1 |
|||
oid sha256:96b8796bca0850d5438495a82ddcea968bc3c8f29d45d7a1d6f625cf57d07ad9 |
|||
size 435971 |
|||