diff --git a/css/style.css b/css/style.css
new file mode 100755
index 0000000..4ce631c
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,1755 @@
+/*
+ Theme Name: Kazhnuz Space
+ Theme URI: https://git.kobold.cafe/quarante-douze/qdouze2-wordpress-theme
+ Author: Kazhnuz
+ Author URI: https://kazhnuz.space
+ Description: The default theme for Kazhnuz Space, my personnal blog.
+ Version: 0.2
+ License: GNU General Public License v3 or later
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
+ Tags: blog, two-columns, right-sidebar
+ Text Domain: kspace-wordpress-theme
+
+ This theme is licensed under the GPLv3.
+*/
+@font-face {
+ font-family: 'Comic Neue Bold Italic';
+ src: local("Comic Neue Bold Italic"), local("ComicNeue-BoldItalic"), url("../fonts/ComicNeue-BoldItalic.woff2") format("woff2"), url("../fonts/ComicNeue-BoldItalic.woff") format("woff");
+ font-weight: bold;
+ font-style: italic;
+ font-display: swap; }
+
+*,
+*::before,
+*::after {
+ box-sizing: inherit; }
+
+html {
+ font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Cantarell, Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ text-align: left;
+ font-size: 4.5mm;
+ line-height: 1.6rem;
+ font-weight: 400;
+ box-sizing: border-box;
+ -webkit-text-size-adjust: 100%; }
+ @media (max-width: 1366px) and (max-height: 768px) {
+ html {
+ font-size: 4.25mm; } }
+body {
+ margin: 0;
+ overflow-x: hidden;
+ text-rendering: optimizeLegibility;
+ color: var(--text-color); }
+
+abbr[title] {
+ border-bottom: none;
+ text-decoration: underline;
+ text-decoration: underline dotted; }
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline; }
+
+sub {
+ bottom: -0.25em; }
+
+sup {
+ top: -0.5em; }
+
+:root {
+ --accent-color: #CB357D;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #ad2d6a;
+ --text-color:#073642;
+ --link-color-hover:rgba(7, 54, 66, 0.15);
+ --link-color:#a32a64; }
+
+strong {
+ font-weight: 600; }
+
+em {
+ font-style: italic;
+ font-weight: 400; }
+
+mark {
+ padding: 0.05rem 0.25rem;
+ border-radius: 0.1rem; }
+
+img {
+ border-style: none; }
+ article img {
+ max-width: 100%;
+ height: auto; }
+
+a {
+ color: var(--link-color);
+ outline-color: #CB357D;
+ padding: 0.05rem;
+ border-radius: 0.1rem;
+ text-decoration: underline dashed 1px;
+ text-underline-offset: 0.1rem; }
+ a:visited {
+ color: var(--link-color); }
+ a:hover, a:active {
+ background-color: var(--link-color-hover);
+ text-decoration: none; }
+
+a:focus-visible, input:focus-visible {
+ outline-style: dashed;
+ outline-width: 2px;
+ outline-offset: 1px; }
+
+mark {
+ background-color: #ffd44f;
+ color: inherit; }
+
+p, ul, ol {
+ padding: 0;
+ padding-bottom: 1.6rem;
+ margin: 0; }
+ p:last-child, ul:last-child, ol:last-child {
+ padding-bottom: 0; }
+
+ul, ol {
+ list-style: disc; }
+ ul ul, ul ol, ol ul, ol ol {
+ padding-bottom: 0;
+ margin: 0; }
+ ul li, ol li {
+ margin: 0;
+ margin-left: 1.6rem;
+ line-height: 1.6rem; }
+ ul.nolist, ol.nolist {
+ display: inline;
+ list-style: none;
+ margin: 0;
+ padding: 0; }
+ ul.nolist li, ol.nolist li {
+ display: inline;
+ margin: 0;
+ padding: 0; }
+
+::selection, ::-moz-selection {
+ background-color: #0f7e84;
+ color: #FDF7E7; }
+
+h1, h2, h3, h4, h5, h6, h7 {
+ font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Cantarell, Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ text-align: left;
+ font-size: 1em;
+ padding: 0;
+ margin: 0;
+ font-weight: 400;
+ padding-bottom: 1.6rem; }
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, h7 a {
+ border: none; }
+
+sup > a, sub > a {
+ color: #CB357D;
+ background-color: transparent; }
+ sup > a:hover, sup > a:focus, sup > a:active, sub > a:hover, sub > a:focus, sub > a:active {
+ color: #a32a64; }
+
+h1, .title-1, .main-title,
+.page-title {
+ font-family: "Comic Neue Bold Italic", sans-serif;
+ font-size: 3rem;
+ line-height: 3.2rem;
+ font-weight: 800;
+ color: #CB357D;
+ letter-spacing: -3px;
+ font-style: italic; }
+
+h2, .title-2 {
+ font-size: 2.441rem;
+ line-height: 3.2rem;
+ font-weight: 300; }
+
+h3, .title-3 {
+ font-size: 1.953rem;
+ line-height: 3.2rem;
+ font-weight: 600; }
+
+h4, .title-4 {
+ font-size: 1.563rem;
+ line-height: 3.2rem;
+ font-weight: 800; }
+
+h5, .title-5 {
+ font-size: 1.25rem;
+ line-height: 1.6rem;
+ font-weight: 600; }
+
+h6, .title-6 {
+ font-size: 1rem;
+ line-height: 1.6rem;
+ font-weight: 800; }
+
+hr {
+ border: 0px solid rgba(1, 1, 1, 0.15);
+ border-bottom: 1px;
+ margin: 1.5em;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible; }
+
+pre {
+ font-family: monospace, monospace;
+ font-size: 1em; }
+
+.small-text, small {
+ font-size: 0.9em; }
+
+.time {
+ font-style: italic;
+ text-align: right;
+ width: 100%;
+ display: block; }
+
+#wrapper {
+ background-color: #FDF7E7; }
+
+.container-big {
+ padding-left: 1.6rem;
+ padding-right: 1.6rem;
+ max-width: 1600px;
+ margin: auto; }
+
+.container, .container-onecolumn {
+ padding-left: 1.6rem;
+ padding-right: 1.6rem;
+ max-width: 1200px;
+ margin: auto; }
+
+.icon {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+ stroke-width: 0;
+ stroke: currentColor;
+ fill: currentColor;
+ color: currentColor;
+ position: relative;
+ top: 0.1em; }
+
+.social .icon {
+ top: 0; }
+
+.toolbar .icon {
+ top: 0.2em; }
+
+.btn {
+ border: 0px solid rgba(0, 0, 0, 0.3);
+ border-radius: 3px 3px 3px 3px;
+ position: relative;
+ z-index: 1;
+ overflow: visible;
+ background-color: transparent;
+ text-decoration: none;
+ padding: 0.5333333333em 1.6em;
+ margin: 0.5333333333em 0.8em 1.6rem;
+ line-height: 1.6rem;
+ height: auto;
+ transition: background-color .2s, border .2s, box-shadow .2s, color .2s;
+ outline-color: var(--accent-color);
+ color: var(--text-color-contrast);
+ background: none !important;
+ font-weight: 400; }
+ .btn:before {
+ content: " ";
+ position: absolute;
+ top: 0;
+ left: -0.8em;
+ right: -0.8em;
+ bottom: 0;
+ z-index: -1;
+ transform: skewX(-15deg);
+ transition: background-color 0.3s;
+ border-radius: 6px; }
+ .btn::before {
+ background-color: var(--accent-color);
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3); }
+ .btn:visited {
+ color: var(--text-color-contrast); }
+ .btn:hover, .btn:active {
+ outline-color: var(--accent-color-hover);
+ box-shadow: none; }
+ .btn:hover::before, .btn:active::before {
+ background-color: var(--accent-color-hover); }
+ p .btn:last-child {
+ margin-bottom: 0; }
+ .btn .fake {
+ background-color: transparent !important;
+ color: var(--text-color); }
+ .btn .fake::before {
+ background-color: transparent !important; }
+
+.btn.disabled, .btn:disabled {
+ opacity: 0.8;
+ background-color: var(--accent-color) !important;
+ outline-color: var(--accent-color) !important;
+ color: var(--text-color-contrast) !important; }
+
+.btn-small {
+ padding: 0.1333333333em 0.2em;
+ margin: 0.1333333333em 0.2em 1.6rem; }
+ .btn-small:before {
+ left: -0.2em;
+ right: -0.2em; }
+
+.btn-readmore, .btn-link {
+ color: var(--link-color);
+ background-color: transparent !important; }
+ .btn-readmore:visited, .btn-link:visited {
+ color: var(--link-color); }
+ .btn-readmore::before, .btn-link::before {
+ background-color: transparent;
+ box-shadow: none; }
+ .btn-readmore:hover::before, .btn-readmore:active::before, .btn-link:hover::before, .btn-link:active::before {
+ background-color: var(--link-color-hover); }
+
+.btn-toolbar {
+ padding: 0 1.6em; }
+
+.btn-group > .btn {
+ border-radius: 3px 3px 3px 3px;
+ margin: 0 0 0 0 !important; }
+
+.btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0; }
+ .btn-group:not(:first-child) > .btn:before {
+ content: " " !important;
+ border-left: 1px solid rgba(0, 0, 0, 0.2); }
+
+.btn-group:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0; }
+
+ul.breadcrumb, ol.breadcrumb, .breadcrumb {
+ border: 0px solid rgba(0, 0, 0, 0.3);
+ border-radius: 3px 3px 3px 3px;
+ position: relative;
+ z-index: 1;
+ overflow: visible;
+ background-color: transparent;
+ background-color: #eee8d5;
+ padding: 0.8em;
+ margin: 0 0 1.6rem;
+ display: flex;
+ flex-direction: row;
+ align-items: flex-start;
+ list-style: none; }
+ ul.breadcrumb:before, ol.breadcrumb:before, .breadcrumb:before {
+ content: " ";
+ position: absolute;
+ top: 0;
+ left: -0.8em;
+ right: -0.8em;
+ bottom: 0;
+ z-index: -1;
+ transform: skewX(-15deg);
+ transition: background-color 0.3s;
+ border-radius: 6px; }
+ ul.breadcrumb::before, ol.breadcrumb::before, .breadcrumb::before {
+ background-color: #eee8d5;
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3); }
+ ul.breadcrumb li, ol.breadcrumb li, .breadcrumb li {
+ margin: 0; }
+
+.breadcrumb li:not(:first-child)::before {
+ content: "/";
+ padding: 0.3rem; }
+
+.breadcrumb .active {
+ font-weight: 600; }
+
+.badge {
+ line-height: 1.5em;
+ padding-left: 0.4em;
+ padding-right: 0.4em;
+ text-decoration: none !important;
+ background-color: var(--accent-color);
+ color: var(--text-color-contrast); }
+
+nav.pagination {
+ padding-bottom: 1.6rem; }
+ nav.pagination .nav-links {
+ text-align: center;
+ width: 100%; }
+ nav.pagination .page-numbers, nav.pagination .next, nav.pagination .prev {
+ border: 0px solid rgba(0, 0, 0, 0.3);
+ border-radius: 3px 3px 3px 3px;
+ position: relative;
+ z-index: 1;
+ overflow: visible;
+ background-color: transparent;
+ padding: 0.2em 0.4em;
+ margin: 0.2em;
+ text-decoration: none; }
+ nav.pagination .page-numbers:before, nav.pagination .next:before, nav.pagination .prev:before {
+ content: " ";
+ position: absolute;
+ top: 0;
+ left: -0.2em;
+ right: -0.2em;
+ bottom: 0;
+ z-index: -1;
+ transform: skewX(-15deg);
+ transition: background-color 0.3s;
+ border-radius: 6px; }
+ nav.pagination .page-numbers:not(.current):not(.dots), nav.pagination .next:not(.current):not(.dots), nav.pagination .prev:not(.current):not(.dots) {
+ outline-color: var(--accent-color);
+ color: var(--link-color); }
+ nav.pagination .page-numbers:not(.current):not(.dots):hover::before, nav.pagination .next:not(.current):not(.dots):hover::before, nav.pagination .prev:not(.current):not(.dots):hover::before {
+ background-color: var(--link-color-hover); }
+ nav.pagination .page-numbers.current, nav.pagination .next.current, nav.pagination .prev.current {
+ background-color: #CB357D;
+ color: #FDF7E7; }
+ nav.pagination .page-numbers.current::before, nav.pagination .next.current::before, nav.pagination .prev.current::before {
+ background-color: #CB357D; }
+
+.card {
+ border-radius: 6px 6px 6px 6px;
+ background-color: #eee8d5;
+ box-shadow: 0px 2px 4px rgba(0, 0, 0, 0);
+ border: none;
+ margin: 0;
+ margin-bottom: 1.6rem;
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3);
+ display: flex;
+ flex-direction: column;
+ color: #073642; }
+ .card > * {
+ margin-left: 1em;
+ margin-right: 1em; }
+ .card > *:first-child, .card > *.sr-only:first-child ~ * {
+ margin-top: 2em; }
+ .card > *:first-child.card-header, .card > *.sr-only:first-child ~ *.card-header {
+ margin-top: 0.8em;
+ letter-spacing: normal; }
+ .card > *:last-child {
+ margin-bottom: 2em; }
+ .card > *:last-child.card-header {
+ margin-bottom: 0.8em; }
+ .card-body {
+ padding: 0 !important; }
+ .card-header {
+ font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Cantarell, Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ font-size: 1em;
+ font-weight: 600;
+ padding: 1em 1.6em;
+ padding-bottom: 1em !important;
+ margin: 0.8em 0px;
+ line-height: 1;
+ position: relative;
+ left: 0px;
+ width: 85%;
+ border: 0px solid rgba(0, 0, 0, 0.3);
+ border-radius: 3px 3px 3px 3px;
+ position: relative;
+ z-index: 1;
+ overflow: visible;
+ background-color: transparent;
+ border-radius: 0;
+ font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Cantarell, Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ color: var(--text-color-contrast); }
+ .card-header:before {
+ content: " ";
+ position: absolute;
+ top: 0;
+ left: -1em;
+ right: -1em;
+ bottom: 0;
+ z-index: -1;
+ transform: skewX(-15deg);
+ transition: background-color 0.3s;
+ border-radius: 6px; }
+ .card-header:first-child {
+ border-top-left-radius: 6px;
+ border-top-right-radius: 6px; }
+ .card-header:last-child {
+ border-bottom-left-radius: 6px;
+ border-bottom-right-radius: 6px; }
+ .card-header .icon {
+ margin-right: 0.25em; }
+ .card-header::before {
+ background-color: var(--accent-color);
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3); }
+
+ul.card-list, .card > ul {
+ padding: 0;
+ margin: 0; }
+ ul.card-list li.list-element, .card > ul li.list-element {
+ line-height: 0.8em;
+ padding: 0.4em, 0.4em, 0.4em, 0.8em;
+ margin: 0; }
+
+.menu {
+ display: flex;
+ flex-direction: column; }
+ .menu ul,
+ .menu li {
+ list-style: none;
+ padding: 0;
+ margin: 0; }
+ .menu.toolbar a, .menu.toolbar a:visited {
+ margin: 0px 2px; }
+ .menu a,
+ .menu a:visited {
+ display: flex;
+ line-height: 1.6em;
+ padding: 0.4em;
+ margin: 2px 0px;
+ justify-content: space-between;
+ align-items: center;
+ text-decoration: none;
+ border-radius: 3px;
+ word-wrap: none;
+ text-overflow: ellipsis;
+ overflow: hidden; }
+ .menu a .badge,
+ .menu a:visited .badge {
+ margin: 0; }
+ .menu a {
+ color: var(--text-color);
+ outline-color: var(--text-color); }
+ .menu a:hover, .menu a:active, .menu a.submenu:focus, .menu a.active {
+ background-color: var(--link-color-hover); }
+
+.submenu .fa-caret-down {
+ position: relative;
+ top: 2px;
+ font-size: 0.8em; }
+
+.toolbar {
+ flex-direction: row;
+ padding: 0.4em; }
+ .toolbar ul {
+ display: flex;
+ flex-direction: row;
+ flex-grow: 1; }
+ .toolbar li {
+ text-align: center;
+ position: relative; }
+ .toolbar li a,
+ .toolbar li span,
+ .toolbar li em,
+ .toolbar li strong, .toolbar li.toolbar-element {
+ display: block;
+ padding: 0.5333333333em 0.8em; }
+ .toolbar li ul {
+ visibility: hidden;
+ opacity: 0;
+ position: absolute;
+ transition: all 0.5s ease;
+ margin-top: 0rem;
+ left: 0;
+ display: none;
+ padding: 0.33rem;
+ z-index: 2;
+ background-color: #eee8d5; }
+ .toolbar li:hover ul,
+ .toolbar li ul:hover, .toolbar li:focus-within ul {
+ visibility: visible;
+ opacity: 1;
+ display: flex;
+ flex-direction: column;
+ border-radius: 6px;
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.2);
+ width: max-content; }
+ .toolbar li:hover ul li,
+ .toolbar li ul:hover li, .toolbar li:focus-within ul li {
+ text-align: left; }
+
+.menu-divider,
+.menu ul h1,
+ul.menu h1,
+.menu h2,
+ul.menu h2 {
+ position: relative;
+ left: -0.4em;
+ font-weight: 800;
+ padding-top: 0.4em;
+ padding-bottom: 0.4em;
+ font-size: 1em;
+ line-height: 1.6em; }
+
+.menu-label {
+ transition: background-color .2s, border .2s, box-shadow .2s, color .2s;
+ padding-left: 0.4em;
+ padding-right: 0.4em; }
+ .menu-label:hover, .menu-label:active {
+ background-color: transparent; }
+
+blockquote, .quote, .well, pre, .pre, .well-pre, .toast, .code {
+ border: 0;
+ border-radius: 6px;
+ margin: 0 0 1.6rem 0;
+ padding: 1.6rem 1rem 1.6rem 1rem;
+ max-width: 100%;
+ font-style: italic;
+ background-color: #eee8d5;
+ color: #073642;
+ box-shadow: 0px 1px 2px rgba(0, 0, 0, 0); }
+
+.well {
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3); }
+
+.toast {
+ background-color: var(--accent-color);
+ color: var(--text-color-contrast);
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3); }
+
+code {
+ font-family: monospace, monospace; }
+
+table {
+ border-collapse: collapse; }
+
+table, th, td {
+ border: 0;
+ padding: 0;
+ margin: 0; }
+
+th, td {
+ vertical-align: center;
+ padding-top: 0.325em;
+ padding-bottom: 0.325em; }
+
+th {
+ font-weight: 800; }
+
+.sidebar-container {
+ width: 100%;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: 1.6rem;
+ column-gap: 3.2rem;
+ grid-template-areas: "side" "main"; }
+ @media (min-width: 992px) {
+ .sidebar-container {
+ grid-template-columns: 360px auto;
+ grid-template-areas: "side main"; } }
+ .sidebar-container .sidebar {
+ padding: 1rem; }
+
+input,
+textarea {
+ width: 100%;
+ background-color: #eee8d5;
+ border-radius: 6px;
+ border: 0px solid rgba(0, 0, 0, 0);
+ padding: 0.4em;
+ line-height: 1.6em;
+ overflow: auto; }
+ .card input, .card textarea {
+ background-color: #FDF7E7; }
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ font-size: 100%;
+ line-height: inherit;
+ margin: 0; }
+
+button,
+select {
+ text-transform: none; }
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button; }
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0; }
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 2px dotted var(--accent-color); }
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em; }
+
+legend {
+ box-sizing: border-box;
+ color: inherit;
+ display: table;
+ max-width: 100%;
+ padding: 0;
+ white-space: normal; }
+
+progress {
+ vertical-align: baseline; }
+
+textarea {
+ overflow: auto; }
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box;
+ padding: 0; }
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto; }
+
+[type="search"] {
+ appearance: textfield;
+ -webkit-appearance: textfield;
+ outline-offset: -2px; }
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none; }
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit; }
+
+.screen-reader-text, .sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+ opacity: 0;
+ transition-delay: .8s;
+ transition-property: opacity;
+ transition-duration: 0.2s; }
+
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto; }
+
+a.sr-hover {
+ position: relative;
+ overflow: visible; }
+
+.sr-hover:hover .sr-only {
+ position: absolute;
+ display: block;
+ width: auto;
+ height: auto;
+ clip: auto;
+ overflow: visible;
+ background-color: rgba(0, 0, 0, 0.8);
+ border-radius: 6px;
+ top: 110%;
+ left: 50%;
+ transform: translateX(-50%);
+ white-space: nowrap;
+ padding: 3px 9px;
+ margin: 0px;
+ font-size: 1rem;
+ z-index: 10;
+ border: 1px solid rgba(255, 255, 255, 0.3);
+ opacity: 1; }
+
+.article img::before {
+ content: "alt"; }
+
+.skip {
+ position: absolute;
+ left: -10000px;
+ top: auto;
+ width: 1px;
+ height: 1px;
+ overflow: hidden; }
+
+.skip:focus-within {
+ position: static;
+ width: auto;
+ height: auto; }
+
+.flex-that {
+ display: flex;
+ justify-content: space-between; }
+
+.align-center {
+ text-align: center;
+ text-indent: 0 !important; }
+
+.align-left {
+ text-align: left; }
+
+.align-right {
+ text-align: right; }
+
+.icon-fw {
+ width: 1em;
+ display: inline-block;
+ text-align: center; }
+
+.round, .pill {
+ border-radius: 9999px; }
+
+.no-borders {
+ border-width: 0px;
+ border-style: none; }
+
+.bg-dark {
+ background-color: #002b36;
+ color: #FDF7E7; }
+ .bg-dark a {
+ color: currentColor;
+ outline-color: currentColor; }
+
+.c-primary, .btn-primary, .head-primary, .text-primary {
+ --accent-color: #CB357D;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #ad2d6a; }
+
+.c-secondary, .btn-secondary, .head-secondary, .text-secondary {
+ --accent-color: #0f7e84;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #0b5d62; }
+
+.c-warning, .btn-warning, .head-warning, .text-warning {
+ --accent-color: #cb4b16;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #a83e12; }
+
+.c-danger, .btn-danger, .head-danger, .text-danger {
+ --accent-color: #dc322f;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #c42421; }
+
+.c-info, .btn-info, .head-info, .text-info {
+ --accent-color: #0f7e84;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #0b5d62; }
+
+.c-success, .btn-success, .head-success, .text-success {
+ --accent-color: #859900;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #647300; }
+
+.c-muted, .btn-muted, .head-muted, .text-muted {
+ --accent-color: #586e75;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #48595f; }
+
+.c-light, .btn-light, .head-light, .text-light {
+ --accent-color: #FDF7E7;
+ --text-color-contrast: #073642;
+ --accent-color-hover: #faebc4; }
+
+.c-dark, .btn-dark, .head-dark, .text-dark {
+ --accent-color: #002b36;
+ --text-color-contrast: #FDF7E7;
+ --accent-color-hover: #003b4a; }
+
+.fg-light {
+ --text-color:#FDF7E7;
+ --link-color-hover:rgba(253, 247, 231, 0.3); }
+
+.fg-dark {
+ color: #073642;
+ --text-color:#073642;
+ --link-color-hover:rgba(7, 54, 66, 0.15); }
+
+.no-pills {
+ list-style: none; }
+
+.m-half {
+ margin: 0.8rem; }
+
+.mb-half {
+ margin-bottom: 0.8rem; }
+
+.mr-half {
+ margin-right: 0.8rem; }
+
+.ml-half {
+ margin-left: 0.8rem; }
+
+.mt-half {
+ margin-top: 0.8rem; }
+
+.m-0 {
+ margin: 0rem; }
+
+.mb-0 {
+ margin-bottom: 0rem; }
+
+.mr-0 {
+ margin-right: 0rem; }
+
+.ml-0 {
+ margin-left: 0rem; }
+
+.mt-0 {
+ margin-top: 0rem; }
+
+.m-1 {
+ margin: 1.6rem; }
+
+.mb-1 {
+ margin-bottom: 1.6rem; }
+
+.mr-1 {
+ margin-right: 1.6rem; }
+
+.ml-1 {
+ margin-left: 1.6rem; }
+
+.mt-1 {
+ margin-top: 1.6rem; }
+
+.m-2 {
+ margin: 3.2rem; }
+
+.mb-2 {
+ margin-bottom: 3.2rem; }
+
+.mr-2 {
+ margin-right: 3.2rem; }
+
+.ml-2 {
+ margin-left: 3.2rem; }
+
+.mt-2 {
+ margin-top: 3.2rem; }
+
+.m-3 {
+ margin: 4.8rem; }
+
+.mb-3 {
+ margin-bottom: 4.8rem; }
+
+.mr-3 {
+ margin-right: 4.8rem; }
+
+.ml-3 {
+ margin-left: 4.8rem; }
+
+.mt-3 {
+ margin-top: 4.8rem; }
+
+.m-4 {
+ margin: 6.4rem; }
+
+.mb-4 {
+ margin-bottom: 6.4rem; }
+
+.mr-4 {
+ margin-right: 6.4rem; }
+
+.ml-4 {
+ margin-left: 6.4rem; }
+
+.mt-4 {
+ margin-top: 6.4rem; }
+
+.p-half {
+ padding: 0.8rem; }
+
+.pb-half {
+ padding-bottom: 0.8rem; }
+
+.pr-half {
+ padding-right: 0.8rem; }
+
+.pl-half {
+ padding-left: 0.8rem; }
+
+.pt-half {
+ padding-top: 0.8rem; }
+
+.p-0 {
+ padding: 0rem; }
+
+.pb-0 {
+ padding-bottom: 0rem; }
+
+.pr-0 {
+ padding-right: 0rem; }
+
+.pl-0 {
+ padding-left: 0rem; }
+
+.pt-0 {
+ padding-top: 0rem; }
+
+.p-1 {
+ padding: 1.6rem; }
+
+.pb-1 {
+ padding-bottom: 1.6rem; }
+
+.pr-1 {
+ padding-right: 1.6rem; }
+
+.pl-1 {
+ padding-left: 1.6rem; }
+
+.pt-1 {
+ padding-top: 1.6rem; }
+
+.p-2 {
+ padding: 3.2rem; }
+
+.pb-2 {
+ padding-bottom: 3.2rem; }
+
+.pr-2 {
+ padding-right: 3.2rem; }
+
+.pl-2 {
+ padding-left: 3.2rem; }
+
+.pt-2 {
+ padding-top: 3.2rem; }
+
+.p-3 {
+ padding: 4.8rem; }
+
+.pb-3 {
+ padding-bottom: 4.8rem; }
+
+.pr-3 {
+ padding-right: 4.8rem; }
+
+.pl-3 {
+ padding-left: 4.8rem; }
+
+.pt-3 {
+ padding-top: 4.8rem; }
+
+.p-4 {
+ padding: 6.4rem; }
+
+.pb-4 {
+ padding-bottom: 6.4rem; }
+
+.pr-4 {
+ padding-right: 6.4rem; }
+
+.pl-4 {
+ padding-left: 6.4rem; }
+
+.pt-4 {
+ padding-top: 6.4rem; }
+
+.ellipsis {
+ flex: 1;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ width: 0;
+ padding-right: 6px; }
+
+.f-column {
+ display: flex;
+ flex-direction: column; }
+ .f-column.reverse {
+ flex-direction: column-reverse; }
+
+.f-row {
+ display: flex;
+ flex-direction: row; }
+ .f-row.reverse {
+ flex-direction: row-reverse; }
+
+.f-start {
+ justify-content: flex-start; }
+
+.f-end {
+ justify-content: flex-end; }
+
+.f-center {
+ justify-content: center; }
+
+.f-around {
+ justify-content: space-around; }
+
+.f-between {
+ justify-content: space-between; }
+
+.d-none {
+ display: none !important; }
+ @media (min-width: 576px) {
+ .d-none-sm {
+ display: none !important; } }
+ @media (min-width: 768px) {
+ .d-none-md {
+ display: none !important; } }
+ @media (min-width: 992px) {
+ .d-none-lg {
+ display: none !important; } }
+ @media (min-width: 1200px) {
+ .d-none-xl {
+ display: none !important; } }
+ @media (min-width: 1600px) {
+ .d-none-xxl {
+ display: none !important; } }
+.d-block {
+ display: block !important; }
+ @media (min-width: 576px) {
+ .d-block-sm {
+ display: block !important; } }
+ @media (min-width: 768px) {
+ .d-block-md {
+ display: block !important; } }
+ @media (min-width: 992px) {
+ .d-block-lg {
+ display: block !important; } }
+ @media (min-width: 1200px) {
+ .d-block-xl {
+ display: block !important; } }
+ @media (min-width: 1600px) {
+ .d-block-xxl {
+ display: block !important; } }
+.d-flex {
+ display: flex !important; }
+ @media (min-width: 576px) {
+ .d-flex-sm {
+ display: flex !important; } }
+ @media (min-width: 768px) {
+ .d-flex-md {
+ display: flex !important; } }
+ @media (min-width: 992px) {
+ .d-flex-lg {
+ display: flex !important; } }
+ @media (min-width: 1200px) {
+ .d-flex-xl {
+ display: flex !important; } }
+ @media (min-width: 1600px) {
+ .d-flex-xxl {
+ display: flex !important; } }
+.no-pills {
+ list-style: none; }
+
+.align-center {
+ text-align: center; }
+
+.align-left {
+ text-align: left; }
+
+.align-right {
+ text-align: right; }
+
+#description {
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-areas: "title" "illustration" "content"; }
+ @media (min-width: 1200px) {
+ #description {
+ grid-template-columns: 400px auto;
+ grid-template-areas: "title title" "illustration content"; } }
+#desc-title {
+ grid-area: title; }
+
+#description-content {
+ grid-area: content; }
+
+.illustration {
+ display: block;
+ margin: auto;
+ grid-area: illustration;
+ max-width: 100%;
+ height: auto; }
+ @media (min-width: 1200px) {
+ .illustration {
+ padding-bottom: 0;
+ max-width: 530px;
+ margin-bottom: 1.5rem;
+ position: relative;
+ top: 0px;
+ right: 64px; } }
+.align-centered-block {
+ text-align: center;
+ padding: 1rem; }
+
+#page-header {
+ background: #0f7e84 url("data:image/svg+xml,%3Csvg width='800' height='300' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='420' cy='440' r='300' fill='%23FDF7E7' /%3E%3Ccircle cx='700' cy='510' r='300' fill='%23FDF7E7' /%3E%3Ccircle cx='-100' cy='510' r='300' fill='%23FDF7E7' /%3E%3Ccircle cx='150' cy='380' r='150' fill='%23FDF7E7' /%3E%3C/svg%3E");
+ border-top: 6px solid #002b36;
+ background-position: bottom center;
+ background-repeat: repeat-x;
+ margin-bottom: 0;
+ padding-bottom: 5rem; }
+ #page-header .fa {
+ font-size: 1rem; }
+ @media (min-width: 576px) {
+ #page-header {
+ padding-bottom: 0;
+ margin-bottom: 1.5rem; } }
+header h1 {
+ border-style: none !important;
+ font-weight: 800;
+ font-size: 5.4em;
+ font-style: oblique;
+ padding: 0rem;
+ line-height: 1rem;
+ max-width: 1200px;
+ margin: auto;
+ text-align: center; }
+ @media (min-width: 1200px) {
+ header h1 {
+ text-align: left; } }
+ header h1 img {
+ max-width: 560px;
+ height: auto;
+ margin-top: 0rem;
+ width: 100%;
+ z-index: 0; }
+ @media (min-width: 1200px) {
+ header h1 img {
+ position: relative;
+ left: -4rem; } }
+ header h1 a, header h1 a:visited, header h1 a:hover {
+ background-color: transparent;
+ outline-color: white;
+ display: block; }
+
+.osd {
+ background-color: rgba(0, 0, 0, 0.3); }
+
+.navbar {
+ border-left: 0;
+ border-right: 0;
+ padding: 0.75rem;
+ color: #FDF7E7; }
+ .navbar a {
+ color: #FDF7E7; }
+ .navbar li {
+ margin: 0; }
+
+.categories {
+ font-weight: 800;
+ font-size: 0.8rem; }
+
+.dropdown-menu {
+ box-shadow: 0px 1px 2px rgba(0, 0, 0, 0), inset 0px -2px 0px rgba(0, 0, 0, 0); }
+
+.container-big {
+ padding-left: 1.6rem;
+ padding-right: 1.6rem;
+ max-width: 1200px;
+ margin: auto; }
+
+.container-blog {
+ padding-left: 1.6rem;
+ padding-right: 1.6rem;
+ max-width: 1200px;
+ margin: auto;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: 1.6rem;
+ column-gap: 1.5rem;
+ grid-template-areas: "main" "side"; }
+ @media (min-width: 992px) {
+ .container-blog {
+ grid-template-columns: auto 320px;
+ grid-template-areas: "main side"; } }
+.grid-2-elements {
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: 1.6rem;
+ column-gap: 1.5rem; }
+ @media (min-width: 992px) {
+ .grid-2-elements {
+ grid-template-columns: 1fr 1fr; } }
+.fullwidth {
+ grid-column: span 2; }
+
+.sidebar {
+ grid-area: side; }
+
+ul.tag-list {
+ display: flex;
+ padding-bottom: 0;
+ overflow: hidden;
+ height: auto;
+ flex-wrap: wrap; }
+ ul.tag-list li {
+ list-style: none;
+ margin: 3px; }
+
+.container-preview {
+ padding-left: 1.6rem;
+ padding-right: 1.6rem;
+ max-width: 1200px;
+ margin: auto;
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: 1.6rem;
+ column-gap: 3rem;
+ grid-template-areas: "main" "side"; }
+ @media (min-width: 992px) {
+ .container-preview {
+ grid-template-columns: 360px auto;
+ grid-template-areas: "side main"; } }
+.container-onecolumn {
+ max-width: 1280px;
+ margin: auto;
+ padding-bottom: 1.6rem; }
+
+body {
+ background-color: #FDF7E7; }
+
+footer {
+ padding-bottom: 1.5rem;
+ padding-top: 1.5rem; }
+ @media (min-width: 768px) {
+ footer .columns {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ grid-gap: 1.6rem; } }
+ footer .columns .col {
+ margin-bottom: 1.6rem; }
+
+.home-toast {
+ max-width: 800px;
+ width: 100%;
+ margin: auto; }
+
+ul.social {
+ font-size: 1.5em;
+ padding-bottom: 1.5em;
+ margin: auto;
+ text-align: center;
+ display: flex;
+ justify-content: center; }
+ ul.social li {
+ margin: 0;
+ list-style: none;
+ line-height: 1; }
+ ul.social li a,
+ ul.social li a:visited {
+ color: #FDF7E7;
+ background-color: var(--accent-color);
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3);
+ padding: 0.3em;
+ width: 3rem;
+ aspect-ratio: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-decoration: none;
+ border-radius: 100%;
+ line-height: 1;
+ margin: 0.33rem; }
+ ul.social li a:hover,
+ ul.social li a:visited:hover {
+ background-color: var(--accent-color-hover); }
+
+iframe {
+ width: 100%;
+ height: 428px;
+ border: none; }
+
+.preview-grid {
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ grid-gap: 1.6rem;
+ padding-bottom: 1.6rem; }
+ @media (min-width: 768px) {
+ .preview-grid {
+ grid-template-columns: 1fr 1fr; } }
+@media (min-width: 1200px) {
+ .preview-grid-3 {
+ grid-template-columns: 1fr 1fr 1fr; } }
+
+.preview-container {
+ width: 100%; }
+
+@media (min-width: 992px) {
+ .prev-col-2 .preview-container {
+ width: 50%; }
+ .prev-col-3 .preview-container {
+ width: 33%; }
+ .prev-col-4 .preview-container {
+ width: 25%; } }
+
+.card-preview {
+ padding: 0;
+ width: 100%;
+ margin: auto;
+ box-shadow: 0px 2px 4px rgba(0, 0, 0, 0), inset 0px -2px 0px rgba(0, 0, 0, 0);
+ max-width: 360px; }
+
+.preview-link {
+ padding: 0;
+ background-color: transparent;
+ margin: 0 !important;
+ text-decoration: none;
+ position: relative;
+ height: 12.8rem; }
+ .preview-link .card-header {
+ letter-spacing: normal;
+ padding: 0.4rem 1.6em;
+ padding-bottom: 0.4rem !important;
+ position: absolute;
+ margin: 0;
+ top: 0.5rem;
+ z-index: 1;
+ min-height: 2.8rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: center; }
+ .preview-link .card-header:before {
+ left: -0.4rem;
+ right: -0.4rem;
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3); }
+
+.preview-content {
+ font-size: 0.9rem;
+ height: 100%;
+ width: 100%;
+ line-height: 1.6rem !important;
+ text-align: justify;
+ background-color: rgba(0, 0, 0, 0);
+ color: rgba(7, 54, 66, 0.7);
+ position: relative;
+ overflow: hidden;
+ border-radius: 6px 6px 6px 6px;
+ box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3); }
+ .preview-content .preview-overlay {
+ height: 100%;
+ width: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ padding-top: 0.4em;
+ backdrop-filter: none;
+ transition: background-color 0.3s, backdrop-filter 0.3s;
+ overflow: hidden;
+ border-radius: 6px 6px 6px 6px; }
+ .preview-content:hover .preview-overlay {
+ backdrop-filter: blur(2px);
+ background-color: rgba(0, 0, 0, 0.4); }
+ .preview-content:hover .preview-overlay .metadata-pills {
+ opacity: .9;
+ transition: opacity .5s, height .5s; }
+ .preview-content:hover .preview-overlay .comment-text {
+ bottom: 0px; }
+
+.preview-exerpt {
+ max-height: 12.8rem;
+ overflow: hidden;
+ background-size: cover;
+ min-height: 100%;
+ min-width: 100%;
+ border-radius: 6px 6px 6px 6px;
+ font-size: 0.85rem;
+ line-height: 1.25rem;
+ display: flex;
+ -ms-flex-align: center !important;
+ align-items: center !important;
+ justify-content: center; }
+ .preview-exerpt h1, .preview-exerpt h2, .preview-exerpt h3, .preview-exerpt h4, .preview-exerpt h5, .preview-exerpt h6 {
+ margin-bottom: 0px;
+ max-width: 100%;
+ display: none; }
+ .preview-exerpt > p {
+ width: 100%;
+ margin: auto; }
+ .preview-exerpt > p:not(.p-img) {
+ position: absolute;
+ top: 3rem;
+ padding: 0.5rem; }
+ .preview-exerpt > p > img {
+ max-width: 100%;
+ height: auto;
+ vertical-align: middle;
+ margin: auto;
+ text-align: center; }
+ .preview-exerpt > p.p-img {
+ text-align: center;
+ margin: auto;
+ padding: auto;
+ display: block;
+ width: 100%; }
+
+.preview-metadata {
+ color: #FDF7E7;
+ height: 100%;
+ overflow: hidden;
+ border-radius: 6px 6px 6px 6px; }
+ .preview-metadata .metadata-pills {
+ opacity: 0;
+ transition: opacity .3s, height .3s;
+ display: flex;
+ justify-content: space-between;
+ padding-left: 0.8rem;
+ padding-right: 0.8rem;
+ font-size: 0.9em;
+ padding-top: 3rem; }
+
+.card-preview.head-info .comment-text {
+ position: relative;
+ background-color: #0f7e84; }
+ .card-preview.head-info .comment-text::before {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 100 16' fill='rgb(15,126,132)' fill-opacity='1'%3E%3Cpolygon points='0,16 100,16 100,0'%3E%3C/polygon%3E%3C/svg%3E");
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+ content: '';
+ height: 16px;
+ left: 0;
+ position: absolute;
+ right: 0;
+ width: 100%;
+ z-index: 1;
+ top: -16px; }
+
+.card-preview.card-grey .comment-text {
+ position: relative;
+ background-color: #586e75; }
+ .card-preview.card-grey .comment-text::before {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 100 16' fill='rgb(88,110,117)' fill-opacity='1'%3E%3Cpolygon points='0,16 100,16 100,0'%3E%3C/polygon%3E%3C/svg%3E");
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+ content: '';
+ height: 16px;
+ left: 0;
+ position: absolute;
+ right: 0;
+ width: 100%;
+ z-index: 1;
+ top: -16px; }
+
+.comment-text {
+ color: #FDF7E7;
+ background-color: #CB357D;
+ position: relative;
+ text-align: center;
+ position: absolute;
+ bottom: -1.6rem;
+ width: 100%;
+ transition: bottom 0.3s; }
+ .comment-text::before {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' viewBox='0 0 100 16' fill='rgb(203,53,125)' fill-opacity='1'%3E%3Cpolygon points='0,16 100,16 100,0'%3E%3C/polygon%3E%3C/svg%3E");
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+ content: '';
+ height: 16px;
+ left: 0;
+ position: absolute;
+ right: 0;
+ width: 100%;
+ z-index: 1;
+ top: -16px; }
+
+.card-preview time {
+ margin-bottom: 0.4em;
+ display: block; }
+
+.author-area {
+ display: flex; }
+ .author-area img.author-avatar, .author-area img.avatar {
+ display: block;
+ height: 4.8rem;
+ width: auto;
+ border-radius: 100%;
+ padding: 0;
+ margin: 0;
+ margin-right: 1.6rem; }
+ .author-area .author-metadata {
+ align-items: center;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start; }
+ .author-area .author-date {
+ font-style: italic; }
+ .author-area:not(:last-child) {
+ margin-bottom: 1.6rem; }
+
+.pigimg {
+ display: block;
+ max-width: 100%;
+ height: auto;
+ margin: auto; }
+
+.avatar {
+ background: transparent; }
+
+.mwarea {
+ padding-bottom: 1.6rem; }
+ .mwarea .avatar {
+ width: 80%;
+ height: auto;
+ display: block;
+ margin: auto; }
+
+.cover {
+ width: 100%;
+ height: auto;
+ border-radius: 6px 6px 6px 6px; }
+
+@media (min-width: 768px) {
+ .roman {
+ width: 80%;
+ position: relative;
+ top: -240px;
+ margin: auto; } }
+
+.preview-featured {
+ font-size: 0.8rem; }
+ .preview-featured .preview-link {
+ display: block;
+ padding: 0;
+ border-radius: 6px;
+ overflow: hidden;
+ text-decoration: none; }
+ .preview-featured .preview-link .preview-item {
+ width: 100%;
+ height: auto;
+ aspect-ratio: 16 / 9;
+ background-size: 100% auto;
+ background-position: center center;
+ transition: background-size .5s; }
+ .preview-featured .preview-link .preview-item:hover {
+ background-size: 120% auto; }
+ .preview-featured .preview-overlay {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+ height: 100%;
+ color: white !important;
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0) 60%);
+ padding: 0.2rem; }
+ .preview-featured .preview-overlay h2 {
+ text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.7); }
+
+.article img {
+ max-width: 100%;
+ height: auto;
+ margin: auto; }
+
+.article .thumbnail img {
+ width: 100%;
+ aspect-ratio: 16 / 9;
+ border-radius: 6px;
+ object-fit: cover; }
+
+.article-meta .author-area {
+ display: flex;
+ align-items: center;
+ margin-bottom: 0.8rem; }
+ .article-meta .author-area img {
+ border-radius: 9999px;
+ width: 4.8rem;
+ height: auto;
+ margin: 0;
+ margin-right: 0.8rem; }
+
+.article-meta .article-category .badge {
+ display: inline-block;
+ margin-bottom: 0.4rem; }
+
+.header-anchor {
+ color: rgba(0, 0, 0, 0.4);
+ font-weight: 900;
+ font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Cantarell, Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ text-decoration: none;
+ display: inline-block;
+ font-style: normal;
+ font-size: 0.75em; }
+
+.header-anchor {
+ opacity: 0; }
+
+:hover > .header-anchor {
+ opacity: 1; }
+
+.aligncenter {
+ text-align: center; }
+
+.alignright {
+ text-align: right; }
+
+#sommaire {
+ position: sticky;
+ top: 32px; }
+
+html {
+ margin-left: 0; }
+ @media (min-width: 992px) {
+ html {
+ margin-left: 320px; } }
+#searchfield {
+ outline-color: #eee8d5;
+ border-radius: 6px;
+ box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, 0.4); }
+
+#mobile-sidebar {
+ position: fixed;
+ top: 0;
+ left: -100vw;
+ width: 320px;
+ height: 100vh;
+ transition: left 0.2s;
+ padding: 1rem;
+ overflow: hidden;
+ z-index: 10;
+ box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.6); }
+ #mobile-sidebar.shown {
+ left: 0; }
+ @media (min-width: 992px) {
+ #mobile-sidebar {
+ left: 0; } }
+img.myavatar {
+ height: 140px;
+ width: auto;
+ display: block;
+ margin: 1rem auto 1.5rem auto;
+ border: 3px solid #FDF7E7;
+ box-shadow: 0px 2px 3px 1px rgba(0, 0, 0, 0.5);
+ border-radius: 8px; }
+ @media (max-width: 1366px) and (max-height: 768px) {
+ img.myavatar {
+ height: 128px;
+ margin: 0.25rem auto 1rem auto; } }
+.menu-button {
+ position: fixed;
+ bottom: 24px;
+ right: 24px;
+ background-color: rgba(0, 0, 0, 0.2);
+ color: #FDF7E7;
+ padding: 0.75em;
+ border: none;
+ font-size: 1.2rem;
+ display: flex;
+ align-content: center;
+ justify-content: center;
+ aspect-ratio: 1;
+ border-radius: 999px;
+ z-index: 12; }
+ .menu-button:hover {
+ background-color: #CB357D; }
+ @media (min-width: 992px) {
+ .menu-button {
+ display: none; } }
diff --git a/fonts/ComicNeue-BoldItalic.woff b/fonts/ComicNeue-BoldItalic.woff
new file mode 100644
index 0000000..82e27eb
Binary files /dev/null and b/fonts/ComicNeue-BoldItalic.woff differ
diff --git a/fonts/ComicNeue-BoldItalic.woff2 b/fonts/ComicNeue-BoldItalic.woff2
new file mode 100644
index 0000000..2fecd41
Binary files /dev/null and b/fonts/ComicNeue-BoldItalic.woff2 differ
diff --git a/generate.sh b/generate.sh
new file mode 100755
index 0000000..43aa399
--- /dev/null
+++ b/generate.sh
@@ -0,0 +1 @@
+sassc scss/style.scss > css/style.css
diff --git a/img/background.png b/img/background.png
new file mode 100755
index 0000000..adc8e32
Binary files /dev/null and b/img/background.png differ
diff --git a/img/cc-by-sa.gif b/img/cc-by-sa.gif
new file mode 100644
index 0000000..f2a04b1
Binary files /dev/null and b/img/cc-by-sa.gif differ
diff --git a/img/default-preview.png b/img/default-preview.png
new file mode 100644
index 0000000..fff0530
Binary files /dev/null and b/img/default-preview.png differ
diff --git a/img/favicon.png b/img/favicon.png
new file mode 100644
index 0000000..eaab9a3
Binary files /dev/null and b/img/favicon.png differ
diff --git a/img/hhghtthrhtr-medium.png b/img/hhghtthrhtr-medium.png
new file mode 100644
index 0000000..7b342d7
Binary files /dev/null and b/img/hhghtthrhtr-medium.png differ
diff --git a/img/hhghtthrhtr-small.avif b/img/hhghtthrhtr-small.avif
new file mode 100644
index 0000000..bd4e6fa
Binary files /dev/null and b/img/hhghtthrhtr-small.avif differ
diff --git a/img/hhghtthrhtr-small.png b/img/hhghtthrhtr-small.png
new file mode 100644
index 0000000..b9519ab
Binary files /dev/null and b/img/hhghtthrhtr-small.png differ
diff --git a/img/koboldcafe.gif b/img/koboldcafe.gif
new file mode 100644
index 0000000..d3bdfbc
Binary files /dev/null and b/img/koboldcafe.gif differ
diff --git a/img/logo.png b/img/logo.png
new file mode 100644
index 0000000..2a2b4b4
Binary files /dev/null and b/img/logo.png differ
diff --git a/index.php b/index.php
new file mode 100755
index 0000000..2d4b670
--- /dev/null
+++ b/index.php
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/languages/en.json b/languages/en.json
new file mode 100755
index 0000000..eda146e
--- /dev/null
+++ b/languages/en.json
@@ -0,0 +1,7 @@
+{
+ "theme-data":
+ {
+ "name": "Kazhnuz Space",
+ "description": "Theme de mon blog, Kazhnuz Space."
+ }
+}
diff --git a/metadata.json b/metadata.json
new file mode 100755
index 0000000..d367577
--- /dev/null
+++ b/metadata.json
@@ -0,0 +1,10 @@
+{
+ "author": "Kazhnuz",
+ "email": "",
+ "website": "https://kazhnuz.space",
+ "version": "0.0.1",
+ "releaseDate": "2024-03-16",
+ "license": "MIT",
+ "compatible": "3.15.0",
+ "notes": ""
+}
diff --git a/php/category.php b/php/category.php
new file mode 100755
index 0000000..1a54aee
--- /dev/null
+++ b/php/category.php
@@ -0,0 +1,53 @@
+
+
+ slug());
+ echo $category->name();
+ ?>
+
+
+
+
+ 1) : ?>
+
+
+
+
+
+
+
diff --git a/php/footer.php b/php/footer.php
new file mode 100755
index 0000000..6badad4
--- /dev/null
+++ b/php/footer.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/php/head.php b/php/head.php
new file mode 100755
index 0000000..845fdd8
--- /dev/null
+++ b/php/head.php
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/php/header.php b/php/header.php
new file mode 100755
index 0000000..e909992
--- /dev/null
+++ b/php/header.php
@@ -0,0 +1,9 @@
+
diff --git a/php/home.php b/php/home.php
new file mode 100755
index 0000000..9519712
--- /dev/null
+++ b/php/home.php
@@ -0,0 +1,57 @@
+
+
+
+ Bienvenue sur mon blog
+
+
+ Bienvenue sur la partie blog de mon site ! Sur cette partie, j'y poste mes pensées, mes textes, bref tout ce que je fais un peu en vrac (heureusement y'a les tags et les catégories pour s'y retrouver).
+
+
+
+
+ type() != "sticky") : ?>
+
+ date('j F Y') ?> : « title(); ?> »
+
+
+
+
+
+
+ 1) : ?>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/php/icons.php b/php/icons.php
new file mode 100755
index 0000000..5a00215
--- /dev/null
+++ b/php/icons.php
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/php/mainmenu.php b/php/mainmenu.php
new file mode 100644
index 0000000..86346b6
--- /dev/null
+++ b/php/mainmenu.php
@@ -0,0 +1,57 @@
+
+
\ No newline at end of file
diff --git a/php/page.php b/php/page.php
new file mode 100755
index 0000000..2e2fe5b
--- /dev/null
+++ b/php/page.php
@@ -0,0 +1,59 @@
+
+
+
+ title(); ?>
+ isStatic() && !$url->notFound()): ?>
+ 13 minutes
+
+
+
+ content(); ?>
+
+ isStatic() && !$url->notFound()): ?>
+
+ Métadonnées de l'article
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/php/search.php b/php/search.php
new file mode 100644
index 0000000..dd27cbc
--- /dev/null
+++ b/php/search.php
@@ -0,0 +1,53 @@
+
+
+ slug());
+ echo "Recherche pour « " . $title[1] . " »";
+ ?>
+
+
+
+
+ 1) : ?>
+
+
+
+
+
+
+
diff --git a/php/sidebar.php b/php/sidebar.php
new file mode 100755
index 0000000..2e5e026
--- /dev/null
+++ b/php/sidebar.php
@@ -0,0 +1,61 @@
+
\ No newline at end of file
diff --git a/php/tag.php b/php/tag.php
new file mode 100644
index 0000000..cb850f8
--- /dev/null
+++ b/php/tag.php
@@ -0,0 +1,53 @@
+
+
+ slug());
+ echo $tag->name();
+ ?>
+
+
+
+
+ 1) : ?>
+
+
+
+
+
+
+
diff --git a/scss/_core.scss b/scss/_core.scss
new file mode 100644
index 0000000..4c18c87
--- /dev/null
+++ b/scss/_core.scss
@@ -0,0 +1,6 @@
+//@import 'core/normalize';
+@import 'core/bases';
+@import 'core/typography';
+@import 'core/containers';
+@import 'core/icons';
+//@import 'core/columns';
diff --git a/scss/_definitions.scss b/scss/_definitions.scss
new file mode 100644
index 0000000..e8af2d9
--- /dev/null
+++ b/scss/_definitions.scss
@@ -0,0 +1,12 @@
+// DEFINITIONS
+
+// Global definitions and variables of the stylesheet
+// With them, you can customize easily how the style look
+// Look at each component inside the definitions subfolder to customize the
+// styles
+
+@import 'definitions/palette';
+@import 'definitions/shadows';
+@import 'definitions/fonts';
+@import 'definitions/borders';
+@import 'definitions/sizing';
diff --git a/scss/_dep.scss b/scss/_dep.scss
new file mode 100644
index 0000000..a933bc2
--- /dev/null
+++ b/scss/_dep.scss
@@ -0,0 +1,2 @@
+// DEPENDECIES
+// Other style used as dependencies
diff --git a/scss/_drawing.scss b/scss/_drawing.scss
new file mode 100644
index 0000000..3b12d1d
--- /dev/null
+++ b/scss/_drawing.scss
@@ -0,0 +1,11 @@
+@import 'components/buttons';
+@import 'components/btn-groups';
+@import 'components/breadcrumb';
+@import 'components/badges';
+@import 'components/pagination';
+@import 'components/cards';
+@import 'components/menus';
+@import 'components/toasts';
+@import 'components/tables';
+@import 'components/sidebar';
+@import 'components/input';
diff --git a/scss/_global.scss b/scss/_global.scss
new file mode 100644
index 0000000..12a20ed
--- /dev/null
+++ b/scss/_global.scss
@@ -0,0 +1,5 @@
+@import 'custom/global';
+@import 'components/previews';
+@import 'custom/featured';
+@import 'custom/article';
+@import 'custom/mobile';
\ No newline at end of file
diff --git a/scss/_mixins.scss b/scss/_mixins.scss
new file mode 100644
index 0000000..98dea2b
--- /dev/null
+++ b/scss/_mixins.scss
@@ -0,0 +1,10 @@
+// MIXINS
+// Include every mixins files
+
+@import 'mixins/colors';
+@import 'mixins/responsive';
+@import 'mixins/borders';
+@import 'mixins/shape';
+//@import 'mixins/btns';
+@import 'mixins/panels';
+@import 'mixins/li';
diff --git a/scss/_utils.scss b/scss/_utils.scss
new file mode 100644
index 0000000..554d5de
--- /dev/null
+++ b/scss/_utils.scss
@@ -0,0 +1,8 @@
+@import 'utils/a11y';
+@import 'utils/align';
+@import 'utils/borders';
+@import 'utils/colorize';
+@import 'utils/lists';
+@import 'utils/sizing';
+@import 'utils/flex';
+@import 'utils/display';
\ No newline at end of file
diff --git a/scss/components/_badges.scss b/scss/components/_badges.scss
new file mode 100644
index 0000000..9360a61
--- /dev/null
+++ b/scss/components/_badges.scss
@@ -0,0 +1,8 @@
+.badge {
+ line-height: 1.5em;
+ padding-left: $button_small;
+ padding-right: $button_small;
+ text-decoration:none!important;
+ background-color:var(--accent-color);
+ color:var(--text-color-contrast);
+}
diff --git a/scss/components/_breadcrumb.scss b/scss/components/_breadcrumb.scss
new file mode 100644
index 0000000..4a564f1
--- /dev/null
+++ b/scss/components/_breadcrumb.scss
@@ -0,0 +1,22 @@
+ul.breadcrumb, ol.breadcrumb, .breadcrumb {
+ @include shape-style($button_large);
+ background-color: $color-background-alt;
+ &::before {
+ background-color: $color-background-alt;
+ box-shadow: $btn-shadow;
+ }
+ padding: $button_large/2;
+ margin: 0 0 $lineheight;
+ @include li-flex();
+}
+
+.breadcrumb {
+ li:not(:first-child)::before {
+ content:"/";
+ padding: 0.3rem;
+ }
+
+ .active {
+ font-weight: 600;
+ }
+}
diff --git a/scss/components/_btn-groups.scss b/scss/components/_btn-groups.scss
new file mode 100644
index 0000000..aa33e1d
--- /dev/null
+++ b/scss/components/_btn-groups.scss
@@ -0,0 +1,26 @@
+// BUTTONS GROUPS
+
+.btn-toolbar {
+ padding: 0 $button-large;
+}
+
+.btn-group {
+ & > .btn {
+ @include border-radius($btn-radius);
+ margin:0 $button-group-margin 0 $button-group-margin!important;
+ }
+
+ &:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius:0;
+ &:before {
+ content: " "!important;
+ border-left:1px solid rgba(0,0,0,0.2);
+ }
+ }
+
+ &:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius:0;
+ }
+}
diff --git a/scss/components/_buttons.scss b/scss/components/_buttons.scss
new file mode 100644
index 0000000..65d3668
--- /dev/null
+++ b/scss/components/_buttons.scss
@@ -0,0 +1,141 @@
+@mixin button($size) {
+ @include button-layout($size);
+ @include shape-style($size);
+ @include button-hover();
+ font-weight: $fontweight_base;
+}
+
+@mixin button-layout($size) {
+ padding: $size;
+ padding-top: $size/3;
+ padding-bottom: $size/3;
+ margin: $size/2;
+ margin-top: $size/3;
+ margin-bottom: $lineheight;
+ //font-size: 4.75mm;
+ line-height: $lineheight;
+ height: auto;
+}
+
+@mixin button-hover() {
+ transition: background-color .2s, border .2s, box-shadow .2s, color .2s;
+
+ &:hover,
+ &:active {
+ background-color: transparent;
+ }
+}
+
+@mixin button-fullcontrol($background-color, $hover-color, $text-color) {
+ @include colorize-shape($background-color);
+ outline-color: $background-color;
+ color: $text-color;
+
+ &:visited {
+ @include colorize-shape($background-color);
+ color: $text-color;
+ }
+
+ &,
+ &:visited,
+ &:not(.disabled):not(:disabled) {
+
+ &:hover,
+ &:active {
+ @include colorize-shape($hover-color);
+ color: lighten($text-color, 5%);
+ outline-color: $hover-color;
+ box-shadow: none;
+ }
+ }
+}
+
+@mixin button-color($background-color) {
+ @include button-fullcontrol($background-color, mix($background-color, getTextColorFromBackground($background-color), 85%), getTextColorFromBackground($background-color));
+ box-shadow: $narrow-shadow;
+}
+
+
+.btn {
+ @include shape-style($button_large);
+ text-decoration: none;
+ padding: $button_large/3 $button_large;
+ margin: $button_large/3 $button_large/2 $lineheight;
+ line-height: $lineheight;
+ height: auto;
+
+ transition: background-color .2s, border .2s, box-shadow .2s, color .2s;
+ outline-color: var(--accent-color);
+ color: var(--text-color-contrast);
+ background: none!important;
+
+ &::before {
+ background-color: var(--accent-color);
+ box-shadow: $btn-shadow;
+ }
+ &:visited {
+ color: var(--text-color-contrast);
+ }
+
+ &:hover,
+ &:active {
+ &::before {
+ background-color: var(--accent-color-hover);
+ }
+
+ outline-color: var(--accent-color-hover);
+ box-shadow: none;
+ }
+ font-weight: $fontweight_base;
+
+ p &:last-child {
+ margin-bottom:0;
+ }
+
+ .fake {
+ background-color: transparent !important;
+
+ &::before {
+ background-color: transparent !important;
+ }
+
+ color:var(--text-color);
+ }
+}
+
+.btn.disabled, .btn:disabled {
+ opacity: 0.8;
+ background-color: var(--accent-color)!important;
+ outline-color: var(--accent-color)!important;
+ color: var(--text-color-contrast)!important;
+}
+
+.btn-small {
+ padding: $button_small/3 $button_small/2;
+ margin: $button_small/3 $button_small/2 $lineheight;
+ &:before {
+ left: -$button_small/2;
+ right: -$button_small/2;
+ }
+}
+
+
+.btn-readmore, .btn-link {
+ color: var(--link-color);
+ &:visited {
+ color: var(--link-color);
+ }
+ background-color: transparent!important;
+ &::before {
+ background-color: transparent;
+ box-shadow: none;
+ }
+
+ &:hover,
+ &:active {
+ &::before {
+ background-color: var(--link-color-hover);
+ }
+ }
+
+}
diff --git a/scss/components/_cards.scss b/scss/components/_cards.scss
new file mode 100644
index 0000000..b3d0c5f
--- /dev/null
+++ b/scss/components/_cards.scss
@@ -0,0 +1,55 @@
+$card-bigpad: $lineheight_rel * 1.25;
+$card-smallpad: $lineheight_rel / 4;
+
+.card {
+ @include panel($card-bigpad);
+ display: flex;
+ flex-direction: column;
+ color:$color-font;
+
+ &-body {
+ padding:0!important;
+ }
+
+ &-header {
+ @include panel-header($card-bigpad);
+ .icon {
+ margin-right: 0.25em;
+ }
+ font-family: $basefont;
+ color: var(--text-color-contrast);
+ &::before {
+ background-color: var(--accent-color);
+ box-shadow: $btn-shadow;
+ }
+ }
+}
+
+@mixin list-symbol($symbol) {
+ li.list-element {
+ list-style: none;
+ &::before {
+ font-family: "ForkAwesome";
+ content:$symbol;
+ padding-right: $lineheight_rel / 4;
+ }
+ }
+}
+
+@mixin list-color($color) {
+ li.list-element {
+ &::before {
+ color: $color;
+ }
+ }
+}
+
+ul.card-list, .card > ul {
+ padding:0;
+ margin:0;
+ li.list-element {
+ line-height:$lineheight_rel / 2;
+ padding: $lineheight_rel / 4, $lineheight_rel / 4, $lineheight_rel / 4, $lineheight_rel / 2;
+ margin:0;
+ }
+}
diff --git a/scss/components/_input.scss b/scss/components/_input.scss
new file mode 100644
index 0000000..bda70b9
--- /dev/null
+++ b/scss/components/_input.scss
@@ -0,0 +1,99 @@
+input,
+textarea {
+ width: 100%;
+ background-color: $color-background-alt;
+ border-radius: $well-radius;
+ border: 0px solid rgba(0, 0, 0, 0);
+ padding: $lineheight_rel / 4;
+ line-height: $lineheight_rel;
+ overflow: auto;
+
+ .card & {
+ background-color: $color-background;
+ }
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ font-size: 100%;
+ line-height: inherit;
+ margin: 0;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 2px dotted var(--accent-color);
+}
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+legend {
+ box-sizing: border-box;
+ color: inherit;
+ display: table;
+ max-width: 100%;
+ padding: 0;
+ white-space: normal;
+}
+
+progress {
+ vertical-align: baseline;
+}
+
+textarea {
+ overflow: auto;
+}
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+[type="search"] {
+ appearance: textfield;
+ -webkit-appearance: textfield;
+ outline-offset: -2px;
+}
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit;
+}
\ No newline at end of file
diff --git a/scss/components/_menus.scss b/scss/components/_menus.scss
new file mode 100644
index 0000000..382f7a3
--- /dev/null
+++ b/scss/components/_menus.scss
@@ -0,0 +1,129 @@
+.menu {
+ display: flex;
+ flex-direction: column;
+
+ ul,
+ li {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ }
+
+
+ &.toolbar a,
+ &.toolbar a:visited {
+ margin: 0px 2px;
+ }
+
+ a,
+ a:visited {
+ display: flex;
+ line-height: $lineheight_rel;
+ padding: $lineheight_rel / 4;
+ margin: 2px 0px;
+ justify-content: space-between;
+ align-items: center;
+ text-decoration: none;
+ border-radius: $btn-radius;
+
+ word-wrap: none;
+ text-overflow: ellipsis;
+ overflow: hidden;
+
+ .badge {
+ margin: 0;
+ }
+ }
+
+ a {
+ color: var(--text-color);
+ outline-color: var(--text-color);
+
+ &:hover,
+ &:active,
+ &.submenu:focus,
+ &.active {
+ background-color: var(--link-color-hover);
+ }
+ }
+}
+
+.submenu .fa-caret-down {
+ position: relative;
+ top: 2px;
+ font-size:0.8em;
+}
+
+.toolbar {
+ flex-direction: row;
+ padding: $lineheight_rel/4;
+
+ ul {
+ display: flex;
+ flex-direction: row;
+
+ flex-grow: 1;
+ }
+
+ li {
+ text-align: center;
+ position: relative;
+
+ a,
+ span,
+ em,
+ strong,
+ &.toolbar-element {
+ display: block;
+ padding: $lineheight_rel/3 $lineheight_rel/2;
+ }
+
+ ul {
+ visibility: hidden;
+ opacity: 0;
+ position: absolute;
+ transition: all 0.5s ease;
+ margin-top: 0rem;
+ left: 0;
+ display: none;
+ padding:0.33rem;
+ z-index:2;
+ background-color: $color-background-alt;
+ }
+
+ &:hover ul,
+ ul:hover,
+ &:focus-within ul {
+ visibility: visible;
+ opacity: 1;
+ display: flex;
+ flex-direction: column;
+ border-radius: $card-radius;
+ box-shadow:0px 1px 1px rgba(0,0,0,0.2);
+ width: max-content;
+ li {
+ text-align:left;
+ }
+ }
+ }
+}
+
+.menu-divider,
+.menu ul h1,
+ul.menu h1,
+.menu h2,
+ul.menu h2 {
+ position: relative;
+ left: -$lineheight_rel / 4;
+ font-weight: $fontweight_hyper;
+ padding-top: $lineheight_rel / 4;
+ padding-bottom: $lineheight_rel / 4;
+ font-size:1em;
+ line-height:$lineheight_rel;
+}
+
+.menu-label {
+ @include button-hover();
+ padding-left: $button_small;
+ padding-right: $button_small;
+}
\ No newline at end of file
diff --git a/scss/components/_pagination.scss b/scss/components/_pagination.scss
new file mode 100644
index 0000000..8b031aa
--- /dev/null
+++ b/scss/components/_pagination.scss
@@ -0,0 +1,30 @@
+nav.pagination {
+ padding-bottom:$lineheight;
+ .nav-links {
+ text-align: center;
+ width:100%;
+ }
+ .page-numbers, .next, .prev {
+ @include shape-style($button_small);
+ padding: $button_small/2 $button_small;
+ margin : $button_small / 2;
+ text-decoration: none;
+
+ &:not(.current):not(.dots) {
+ outline-color: var(--accent-color);
+ color: var(--link-color);
+ &:hover {
+ &::before {
+ background-color: var(--link-color-hover);
+ }
+ }
+ }
+
+ &.current {
+ @include background-color($color-primary);
+ &::before {
+ background-color: $color-primary;
+ }
+ }
+ }
+}
diff --git a/scss/components/_previews.scss b/scss/components/_previews.scss
new file mode 100644
index 0000000..145d898
--- /dev/null
+++ b/scss/components/_previews.scss
@@ -0,0 +1,289 @@
+$preview-height: 8*$lineheight;
+$preview-content-height:165px;
+$comment-peek-height:0px;
+
+.preview-grid {
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ grid-gap: $lineheight;
+ padding-bottom: $lineheight;
+
+ @include md() {
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+.preview-grid-3 {
+ @include xl() {
+ grid-template-columns: 1fr 1fr 1fr;
+ }
+
+}
+
+.preview-container {
+ width:100%;
+}
+
+@media(max-width:767px){}
+@media(min-width:768px){}
+@media(min-width:992px){
+
+ .prev-col-2 .preview-container {
+ width:50%;
+ }
+
+ .prev-col-3 .preview-container {
+ width:33%;
+ }
+
+ .prev-col-4 .preview-container {
+ width:25%;
+ }
+
+}
+
+.card-preview {
+ padding:0;
+ width:100%;
+ margin:auto;
+ box-shadow: $large-shadow, $inset-shadow;
+ max-width:360px;
+}
+
+.preview-link {
+ padding:0;
+ background-color: transparent;
+ margin:0!important;
+ text-decoration: none;
+ position:relative;
+ height: $preview-height;
+
+ .card-header {
+ letter-spacing: normal;
+ padding: $lineheight_half/2 $card-header-padding;
+ padding-bottom: $lineheight_half/2 !important;
+ &:before {
+ left: -$lineheight_half/2;
+ right: -$lineheight_half/2;
+ box-shadow: $btn-shadow;
+ }
+
+ position:absolute;
+ margin:0;
+ top:0.5rem;
+ z-index:1;
+ min-height:2.8rem;
+ display:flex;
+ flex-direction: column;
+ justify-content: center;
+ }
+}
+
+.preview-content {
+ font-size:0.9rem;
+ height: 100%;
+ width: 100%;
+ line-height: $lineheight !important;
+ text-align:justify;
+ background-color:rgba(0,0,0,0.00);
+ color: transparentize($color-font, 0.3);
+ position: relative;
+ overflow:hidden;
+ @include border-radius($card-radius);
+ box-shadow: $btn-shadow;
+
+ .preview-overlay {
+ height: 100%;
+ width: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ padding-top: $card-header-vmargin/2;
+ backdrop-filter: none;
+ transition: background-color 0.3s, backdrop-filter 0.3s;
+ overflow: hidden;
+ @include border-radius($card-radius);
+ }
+
+ &:hover {
+ .preview-overlay {
+ backdrop-filter: blur(2px);
+ background-color:rgba(0,0,0,0.4);
+
+ .metadata-pills {
+ opacity: .9;
+ transition: opacity .5s, height .5s;
+ }
+
+ .comment-text {
+ bottom:0px;
+ }
+ }
+ }
+}
+
+.preview-exerpt {
+ max-height: $preview-height;
+ overflow:hidden;
+ background-size: cover;
+ min-height:100%;
+ min-width:100%;
+ @include border-radius($card-radius);
+ font-size:0.85rem;
+ line-height:1.25rem;
+
+ display: flex;
+ -ms-flex-align: center !important;
+ align-items: center !important;
+ justify-content: center;
+
+ h1, h2, h3, h4, h5, h6 {
+ margin-bottom:0px;
+ max-width:100%;
+ display:none;
+ }
+
+ & > p {
+ width:100%;
+ margin:auto;
+
+ &:not(.p-img) {
+ position:absolute;
+ top:3rem;
+ padding:0.5rem;
+ }
+
+ & > img {
+ max-width:100%;
+ height:auto;
+ vertical-align:middle;
+ margin:auto;
+ text-align:center;
+ }
+
+ &.p-img {
+ text-align:center;
+ margin:auto;
+ padding:auto;
+ display: block;
+ width:100%;
+ }
+ }
+}
+
+.preview-metadata {
+ color: $color-font-light;
+ height:100%;
+ overflow: hidden;
+ @include border-radius($card-radius);
+
+ .metadata-pills {
+ opacity: 0;
+ transition: opacity .3s, height .3s;
+ display:flex;
+ justify-content:space-between;
+ padding-left: $lineheight/2;
+ padding-right: $lineheight/2;
+ font-size:0.9em;
+ padding-top:3rem;
+ }
+}
+
+.card-preview.head-info {
+ .comment-text {
+ @include angled-edge('outside top', 'upper left', $color-secondary, 16);
+ background-color:$color-secondary;
+ }
+}
+
+.card-preview.card-grey {
+ .comment-text {
+ @include angled-edge('outside top', 'upper left', $color-muted, 16);
+ background-color:$color-muted;
+ }
+}
+
+.comment-text {
+ color: $color-font-light;
+ background-color:$color-primary;
+ @include angled-edge('outside top', 'upper left', $color-primary, 16);
+ text-align: center;
+ position:absolute;
+ bottom:-$lineheight;
+ width:100%;
+ transition: bottom 0.3s;
+}
+
+.card-preview time {
+ margin-bottom:0.4em;
+ display:block;
+}
+
+// Author area
+
+.author-area {
+ display:flex;
+
+ img.author-avatar, img.avatar {
+ display:block;
+ height: $lineheight*3;
+ width:auto;
+ border-radius:100%;
+ padding:0;
+ margin:0;
+ margin-right:$lineheight;
+ }
+
+ .author-metadata {
+ align-items:center;
+ display:flex;
+ flex-direction:column;
+ justify-content: center;
+ align-items: flex-start;
+ }
+
+ .author-date {
+ font-style:italic;
+ }
+
+ &:not(:last-child) {
+ margin-bottom:$lineheight;
+ }
+}
+
+.pigimg {
+ display:block;
+ max-width: 100%;
+ height:auto;
+ margin:auto;
+}
+
+.avatar {
+ background: transparent;
+}
+
+.mwarea {
+ padding-bottom: $lineheight;
+ .avatar {
+ width:80%;
+ height:auto;
+ display:block;
+ margin:auto;
+ }
+}
+
+.cover {
+ width:100%;
+ height:auto;
+ @include border-radius($card-radius);
+}
+
+.roman {
+ @include md() {
+ width:80%;
+ position:relative;
+ top:-240px;
+ margin:auto;
+ }
+}
diff --git a/scss/components/_sidebar.scss b/scss/components/_sidebar.scss
new file mode 100644
index 0000000..52bb38d
--- /dev/null
+++ b/scss/components/_sidebar.scss
@@ -0,0 +1,21 @@
+.sidebar-container {
+ width:100%;
+
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: $lineheight;
+ column-gap: $lineheight*2;
+ grid-template-areas:
+ "side"
+ "main";
+
+ @include lg() {
+ grid-template-columns: 360px auto;
+ grid-template-areas: "side main";
+ }
+
+ .sidebar {
+ padding:1rem;
+ }
+}
diff --git a/scss/components/_tables.scss b/scss/components/_tables.scss
new file mode 100644
index 0000000..c6cc8f0
--- /dev/null
+++ b/scss/components/_tables.scss
@@ -0,0 +1,19 @@
+table {
+ border-collapse: collapse;
+}
+
+table, th, td {
+ border:0;
+ padding:0;
+ margin:0;
+}
+
+th, td {
+ vertical-align:center;
+ padding-top: 0.325em;
+ padding-bottom: 0.325em;
+}
+
+th {
+ font-weight: $fontweight_hyper;
+}
diff --git a/scss/components/_toasts.scss b/scss/components/_toasts.scss
new file mode 100644
index 0000000..d25f577
--- /dev/null
+++ b/scss/components/_toasts.scss
@@ -0,0 +1,30 @@
+@mixin well() {
+ border: 0;
+ border-radius: $well-radius;
+
+ margin: 0 0 $lineheight 0;
+ padding: $lineheight 1rem $lineheight 1rem;
+
+ max-width: 100%;
+ font-style: italic;
+ @include background-color($color-background-alt);
+ box-shadow: $narrow-shadow;
+}
+
+blockquote, .quote, .well, pre, .pre, .well-pre, .toast, .code {
+ @include well();
+}
+
+.well {
+ box-shadow: $btn-shadow;
+}
+
+.toast {
+ background-color: var(--accent-color);
+ color: var(--text-color-contrast);
+ box-shadow: $btn-shadow;
+}
+
+code {
+ font-family: monospace, monospace;
+}
\ No newline at end of file
diff --git a/scss/core/_bases.scss b/scss/core/_bases.scss
new file mode 100644
index 0000000..0cd67ca
--- /dev/null
+++ b/scss/core/_bases.scss
@@ -0,0 +1,50 @@
+*,
+*::before,
+*::after {
+ box-sizing: inherit;
+}
+
+html {
+ // Text initialization
+ font-family: $basefont;
+ text-align: left;
+ font-size: $fontsize;
+ @include old() {
+ font-size: $fontsize-small;
+ }
+ line-height: $lineheight;
+ font-weight: $fontweight_base;
+
+ // Normalization
+ box-sizing: border-box;
+ -webkit-text-size-adjust: 100%;
+}
+
+body {
+ margin: 0;
+ overflow-x: hidden;
+ text-rendering: optimizeLegibility;
+ color: var(--text-color);
+}
+
+abbr[title] {
+ border-bottom: none;
+ text-decoration: underline;
+ text-decoration: underline dotted;
+}
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
\ No newline at end of file
diff --git a/scss/core/_columns.scss b/scss/core/_columns.scss
new file mode 100644
index 0000000..6e485d0
--- /dev/null
+++ b/scss/core/_columns.scss
@@ -0,0 +1,72 @@
+@mixin column($size) {
+ grid-column: span $size;
+}
+
+[class*=" col-"],
+[class^=col-] {
+ width: 100%;
+ margin: 0;
+
+ &>*:last-child {
+ margin-bottom: 0 !important;
+ }
+}
+
+@mixin column-list() {
+ &-1 {@include column(1);}
+ &-2 {@include column(2);}
+ &-3 {@include column(3);}
+ &-4 {@include column(4);}
+ &-5 {@include column(5);}
+ &-6 {@include column(6);}
+ &-7 {@include column(7);}
+ &-8 {@include column(8);}
+ &-9 {@include column(9);}
+ &-10 {@include column(10);}
+ &-11 {@include column(11);}
+ &-12 {@include column(12);}
+}
+
+.columns {
+ display:grid;
+ grid-gap:$lineheight;
+ grid-template-columns: repeat(12, 1fr);
+ grid-template-rows: auto;
+ padding:$lineheight;
+ &-nogap {
+ grid-gap:0px;
+ }
+}
+
+.column {
+ @include column(12);
+}
+
+.col {
+ @include column-list();
+ &-sm {
+ @include sm() {
+ @include column-list();
+ }
+ }
+ &-md {
+ @include md() {
+ @include column-list();
+ }
+ }
+ &-lg {
+ @include lg() {
+ @include column-list();
+ }
+ }
+ &-xl {
+ @include xl() {
+ @include column-list();
+ }
+ }
+ &-xxl {
+ @include xxl() {
+ @include column-list();
+ }
+ }
+}
diff --git a/scss/core/_containers.scss b/scss/core/_containers.scss
new file mode 100644
index 0000000..d36380f
--- /dev/null
+++ b/scss/core/_containers.scss
@@ -0,0 +1,11 @@
+#wrapper {
+ background-color: $color-background;
+}
+
+.container-big {
+ @include container($container-size-large, $lineheight);
+}
+
+.container, .container-onecolumn {
+ @include container($container-size, $lineheight);
+}
diff --git a/scss/core/_icons.scss b/scss/core/_icons.scss
new file mode 100644
index 0000000..696947c
--- /dev/null
+++ b/scss/core/_icons.scss
@@ -0,0 +1,19 @@
+.icon {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+ stroke-width: 0;
+ stroke: currentColor;
+ fill: currentColor;
+ color: currentColor;
+ position: relative;
+ top: 0.1em;
+}
+
+.social .icon {
+ top: 0;
+}
+
+.toolbar .icon {
+ top: 0.2em;
+}
\ No newline at end of file
diff --git a/scss/core/_normalize.scss b/scss/core/_normalize.scss
new file mode 100644
index 0000000..039c093
--- /dev/null
+++ b/scss/core/_normalize.scss
@@ -0,0 +1,44 @@
+main {
+ display: block;
+}
+
+/* Forms
+ ========================================================================== */
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
diff --git a/scss/core/_typography.scss b/scss/core/_typography.scss
new file mode 100644
index 0000000..8f8200e
--- /dev/null
+++ b/scss/core/_typography.scss
@@ -0,0 +1,192 @@
+@mixin paragraph() {
+ padding:0;
+ padding-bottom: $lineheight;
+ margin: 0;
+}
+
+ :root {
+ @include accent-color($color-primary);
+ --text-color:#{$color-font};
+ --link-color-hover:#{transparentize($color-font, 0.85)};
+ --link-color:#{darken($color-link, 10%)};
+ }
+
+// html, body {
+// font-family: $basefont;
+// text-align: left;
+// font-size: $fontsize;
+// line-height: $lineheight;
+// color: getFontColor();
+// font-weight: $fontweight_base;
+// }
+
+strong {
+ font-weight: $fontweight_bold;
+}
+
+em {
+ font-style: italic;
+ font-weight: $fontweight_base;
+}
+
+mark {
+ padding: 0.05rem 0.25rem;
+ border-radius: 0.1rem;
+}
+
+img {
+ border-style: none;
+ article & {
+ max-width:100%;
+ height: auto;
+ }
+}
+
+a {
+ color: var(--link-color);
+ outline-color: $color-link;
+ padding: 0.05rem;
+ border-radius: 0.1rem;
+ text-decoration: underline dashed 1px;
+ text-underline-offset: 0.1rem;
+
+ &:visited {
+ color: var(--link-color);
+ }
+
+ &:hover, &:active {
+ background-color: var(--link-color-hover);
+ text-decoration: none;
+ }
+}
+
+a:focus-visible, input:focus-visible {
+ outline-style: dashed;
+ outline-width: 2px;
+ outline-offset: 1px;
+}
+
+mark {
+ background-color: lighten($color-mark, 30%);
+ color: inherit;
+}
+
+p, ul, ol {
+ @include paragraph();
+ &:last-child {
+ padding-bottom:0;
+ }
+}
+
+ul, ol {
+ list-style: disc;
+ ul, ol {
+ padding-bottom:0;
+ margin:0;
+ }
+ li {
+ margin:0;
+ margin-left: $lineheight;
+ line-height: $lineheight;
+ }
+
+ &.nolist {
+ display:inline;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ li {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ }
+ }
+}
+
+::selection, ::-moz-selection {
+ @include background-color($color-selection);
+}
+
+@mixin newTitle($size, $weight) {
+ $lineNumber: ceil($size / 1.5);
+ font-size: $size * 1rem;
+ line-height: $lineNumber * $lineheight;
+ font-weight: $weight;
+}
+
+h1, h2, h3, h4, h5, h6, h7 {
+ font-family: $basefont;
+ text-align: left;
+ font-size: 1em;
+ padding:0;
+ margin:0;
+ font-weight: $fontweight_base;
+ padding-bottom: $lineheight;
+ a {
+ border: none;
+ }
+}
+
+sup, sub {
+ & > a {
+ color: $color-link;
+ background-color:transparent;
+ &:hover, &:focus, &:active {
+ color: darken($color-link, 10%);
+ }
+ }
+}
+
+h1, .title-1, .main-title,
+.page-title {
+ font-family: $titlefont;
+ @include newTitle(3, $fontweight_hyper);
+ color: $color-primary;
+ letter-spacing: -3px;
+ font-style: italic;
+}
+
+h2, .title-2 {
+ @include newTitle(2.441, $fontweight_big);
+}
+
+h3, .title-3 {
+ @include newTitle(1.953, $fontweight_bold);
+}
+
+h4, .title-4 {
+ @include newTitle(1.563, $fontweight_hyper);
+}
+
+h5, .title-5 {
+ @include newTitle(1.25, $fontweight_bold);
+}
+
+h6, .title-6 {
+ @include newTitle(1, $fontweight_hyper);
+}
+
+hr {
+ border: 0px solid rgba(1, 1, 1, 0.15);
+ border-bottom: 1px;
+ margin: 1.5em;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible;
+}
+
+pre {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+.small-text, small {
+ font-size: 0.9em;
+}
+
+.time {
+ font-style: italic;
+ text-align: right;
+ width: 100%;
+ display: block;
+}
diff --git a/scss/custom/_angled-edges.scss b/scss/custom/_angled-edges.scss
new file mode 100644
index 0000000..1093932
--- /dev/null
+++ b/scss/custom/_angled-edges.scss
@@ -0,0 +1,143 @@
+//-------------------------------------------------------------------------------------
+// Angled Edges v2.0.0 (https://github.com/josephfusco/angled-edges)
+// Copyright 2017 Joseph Fusco
+// Licensed under MIT (https://github.com/josephfusco/angled-edges/blob/master/LICENSE)
+//-------------------------------------------------------------------------------------
+
+/// Replace `$search` with `$replace` in `$string`.
+///
+/// @author Hugo Giraudel
+/// @link http://www.sassmeister.com/gist/1b4f2da5527830088e4d
+///
+/// @param {String} $string - Initial string
+/// @param {String} $search - Substring to replace
+/// @param {String} $replace ('') - New value
+/// @return {String} Updated string
+///
+@function ae-str-replace($string, $search, $replace: '') {
+ $index: str-index($string, $search);
+
+ @if $index {
+ @return str-slice($string, 1, $index - 1) + $replace + ae-str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+ }
+
+ @return $string;
+}
+
+/// Encode SVG to use as background.
+///
+/// @param {String} $string
+/// @return {String} Encoded svg data
+///
+@function ae-svg-encode($string){
+ $result: ae-str-replace($string, '', '%3E');
+
+ @return 'data:image/svg+xml,' + $result;
+}
+
+/// Outputs pseudo content for main mixin.
+///
+/// @author Joseph Fusco
+///
+/// @param {String} $location
+/// @param {Number} $height
+/// @output psuedo content
+///
+@mixin ae-pseudo($wedge, $height, $width) {
+ background-image: url($wedge);
+ background-position: center center;
+ background-repeat: no-repeat;
+
+ // full width wedge - needed as Firefox ignores preserveAspectRatio="none" in this case
+ @if ($width == null) {
+ background-size: 100% 100%;
+ }
+
+ content: '';
+ height: $height * 1px;
+ left: 0;
+ position: absolute;
+ right: 0;
+ width: 100%;
+ z-index: 1;
+}
+
+/// Attatches an svg wedge shape to an element.
+///
+/// @author Joseph Fusco
+///
+/// @param {String} $location - 'inside top', 'outside top', 'inside bottom', 'outside bottom'
+/// @param {String} $hypotenuse - 'upper left', 'upper right', 'lower left', 'lower right'
+/// @param {Color} $fill
+/// @param {Number} $height
+/// @param {Number} $width
+/// @output '::before' and/or '::after' with svg background image
+///
+@mixin angled-edge($location, $hypotenuse, $fill, $height: 100, $width: null) {
+
+ position: relative;
+
+ $points: (
+ 'upper left': '0,#{$height} #{$width},#{$height} #{$width},0',
+ 'upper right': '0,#{$height} #{$width},#{$height} 0,0',
+ 'lower left': '0,0 #{$width},#{$height} #{$width},0',
+ 'lower right': '0,0 #{$width},0 0,#{$height}'
+ );
+
+ // full width wedge
+ @if ($width == null) {
+ $points: (
+ 'upper left': '0,#{$height} 100,#{$height} 100,0',
+ 'upper right': '0,#{$height} 100,#{$height} 0,0',
+ 'lower left': '0,0 100,#{$height} 100,0',
+ 'lower right': '0,0 100,0 0,#{$height}'
+ );
+ }
+
+ // ensure $fill color is using rgb()
+ $fill-rgb: 'rgb(' + round(red($fill)) + ',' + round(green($fill)) + ',' + round(blue($fill)) + ')';
+
+ // capture alpha component of $fill to use with fill-opacity
+ $fill-alpha: alpha($fill);
+
+ $wedge: ' ';
+
+ // full width wedge
+ @if ($width == null) {
+ $wedge: ' ';
+ }
+
+ $encoded-wedge: ae-svg-encode($wedge);
+
+ @if ($location == 'inside top') {
+ &::before {
+ @include ae-pseudo($encoded-wedge, $height, $width);
+ top: 0;
+ }
+ } @else if ($location == 'outside top') {
+ &::before {
+ @include ae-pseudo($encoded-wedge, $height, $width);
+ top: -$height * 1px;
+ }
+ } @else if ($location == 'inside bottom') {
+ &::after {
+ @include ae-pseudo($encoded-wedge, $height, $width);
+ bottom: 0;
+ }
+ } @else if ($location == 'outside bottom') {
+ &::after {
+ @include ae-pseudo($encoded-wedge, $height, $width);
+ bottom: -$height * 1px;
+ }
+ } @else {
+ @error 'Invalid argument for $location - must use: `inside top`, `outside top`, `inside bottom`, `outside bottom`';
+ }
+
+ @if (map-has-key($points, $hypotenuse) == false) {
+ @error 'Invalid argument for $hypotenuse - must use: `upper left`, `upper right`, `lower left`, `lower right`';
+ }
+}
diff --git a/scss/custom/_article.scss b/scss/custom/_article.scss
new file mode 100644
index 0000000..ee30aaa
--- /dev/null
+++ b/scss/custom/_article.scss
@@ -0,0 +1,68 @@
+.article {
+ img {
+ max-width:100%;
+ height:auto;
+ margin:auto;
+ }
+
+ .thumbnail img {
+ width:100%;
+ aspect-ratio: 16 / 9;
+ border-radius: $card-radius;
+ object-fit: cover;
+ }
+}
+
+.article-meta {
+ .author-area {
+ display: flex;
+ align-items: center;
+ margin-bottom: $lineheight / 2;
+
+ img {
+ border-radius: 9999px;
+ width: $lineheight * 3;
+ height: auto;
+ margin: 0;
+ margin-right: $lineheight / 2;
+ }
+ }
+
+ .article-category {
+ .badge {
+ display: inline-block;
+ margin-bottom: $lineheight / 4;
+ }
+ }
+}
+
+.header-anchor {
+ color: rgba(0,0,0,0.4);
+ font-weight: 900;
+ font-family: $basefont;
+ text-decoration: none;
+ display: inline-block;
+ font-style: normal;
+ font-size: 0.75em;
+}
+
+.header-anchor {
+ opacity: 0;
+}
+
+:hover > .header-anchor {
+ opacity: 1;
+}
+
+.aligncenter {
+ text-align: center;
+}
+
+.alignright {
+ text-align: right;
+}
+
+#sommaire {
+ position: sticky;
+ top: 32px;
+}
\ No newline at end of file
diff --git a/scss/custom/_featured.scss b/scss/custom/_featured.scss
new file mode 100644
index 0000000..8b67fab
--- /dev/null
+++ b/scss/custom/_featured.scss
@@ -0,0 +1,38 @@
+.preview-featured {
+ font-size: 0.8rem;
+
+ .preview-link {
+ display: block;
+ padding:0;
+ border-radius: $card-radius;
+ overflow: hidden;
+ text-decoration: none;
+ .preview-item {
+ width: 100%;
+ height: auto;
+ aspect-ratio: 16 / 9;
+ background-size:100% auto;
+ background-position: center center;
+ transition: background-size .5s;
+
+ &:hover {
+ background-size: 120% auto;
+ }
+ }
+ }
+
+ .preview-overlay {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+ height:100%;
+ color: white !important;
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0) 60%);
+ padding:$lineheight / 8;
+
+ h2 {
+ text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.7);
+ }
+ }
+}
\ No newline at end of file
diff --git a/scss/custom/_global.scss b/scss/custom/_global.scss
new file mode 100644
index 0000000..0fbe9f4
--- /dev/null
+++ b/scss/custom/_global.scss
@@ -0,0 +1,294 @@
+@mixin li-no-margin() {
+ li {
+ margin: 0;
+ }
+}
+
+@mixin container-big() {
+ padding-left: $lineheight;
+ padding-right: $lineheight;
+ max-width: $container-size;
+ margin:auto;
+}
+
+.no-pills {
+ list-style:none;
+}
+
+.align {
+ &-center {text-align: center;}
+ &-left {text-align: left;}
+ &-right {text-align: right;}
+}
+
+#description {
+ display:grid;
+ grid-template-columns: 1fr;
+ grid-template-areas:
+ "title"
+ "illustration"
+ "content";
+ @include xl() {
+ grid-template-columns: 400px auto;
+ grid-template-areas:
+ "title title"
+ "illustration content";
+ }
+}
+
+#desc-title {
+ grid-area: title;
+}
+
+#description-content {
+ grid-area:content;
+}
+
+.illustration {
+ display:block;
+ margin:auto;
+ grid-area:illustration;
+ max-width:100%;
+ height:auto;
+ @include xl() {
+ padding-bottom: 0;
+ max-width: 530px;
+ margin-bottom: 1.5rem;
+ position: relative;
+ top: 0px;
+ right: 64px;
+ }
+}
+
+.align-centered-block {
+ text-align:center;
+ padding:1rem;
+}
+
+#page-header {
+ background: get-color("skyblue") url("data:image/svg+xml,%3Csvg width='800' height='300' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='420' cy='440' r='300' fill='%23FDF7E7' /%3E%3Ccircle cx='700' cy='510' r='300' fill='%23FDF7E7' /%3E%3Ccircle cx='-100' cy='510' r='300' fill='%23FDF7E7' /%3E%3Ccircle cx='150' cy='380' r='150' fill='%23FDF7E7' /%3E%3C/svg%3E");
+ border-top: 6px solid get-color("dark");
+ background-position: bottom center;
+ background-repeat: repeat-x;
+ margin-bottom:0;
+ padding-bottom:5rem;
+ .fa {
+ font-size: 1rem;
+ }
+
+ @include sm() {
+ padding-bottom: 0;
+ margin-bottom: 1.5rem;
+ }
+}
+
+header h1 {
+ border-style:none !important;
+ font-weight: $fontweight_hyper;
+ font-size:5.4em;
+ font-style:oblique;
+ padding:0rem;
+ line-height: 1rem;
+ max-width: $container-size;
+ margin: auto;
+ text-align:center;
+
+ @include xl() {
+ text-align: left;
+ }
+
+ img {
+ max-width: 560px;
+ height: auto;
+ margin-top:0rem;
+ width: 100%;
+
+ @include xl() {
+ position: relative;
+ left:-4rem;
+ }
+ z-index:0;
+ }
+
+ a, a:visited, a:hover {
+ background-color:transparent;
+ outline-color:white;
+ display: block;
+ }
+
+
+}
+
+.osd {
+ background-color:rgba(0,0,0,0.3);
+}
+
+.navbar {
+ border-left: 0;
+ border-right: 0;
+ padding: 0.75rem;
+ color: $color-font-light;
+ a {
+ color: $color-font-light;
+ }
+ @include li-no-margin();
+}
+
+.categories {
+ font-weight:800;
+ font-size:0.8rem;
+}
+
+.dropdown-menu {
+ box-shadow: $narrow-shadow, $inset-shadow;
+}
+
+.container-big {
+ @include container-big();
+}
+
+.container-blog {
+ @include container-big();
+
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: $lineheight;
+ column-gap: 1.5rem;
+ grid-template-areas:
+ "main"
+ "side";
+
+ @include lg() {
+ grid-template-columns: auto 320px;
+ grid-template-areas: "main side";
+ }
+}
+
+.grid-2-elements {
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: $lineheight;
+ column-gap: 1.5rem;
+ @include lg() {
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+.fullwidth {
+ grid-column: span 2;
+}
+
+.sidebar {
+ grid-area: side;
+}
+
+ul.tag-list {
+ display:flex;
+ padding-bottom:0;
+ overflow: hidden;
+ height:auto;
+ flex-wrap: wrap;
+
+ li {
+ list-style: none;
+ margin:3px;
+ }
+}
+
+.container-preview {
+ @include container-big();
+
+ display: grid;
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ row-gap: $lineheight;
+ column-gap: 3rem;
+ grid-template-areas:
+ "main"
+ "side";
+
+ @include lg() {
+ grid-template-columns: 360px auto;
+ grid-template-areas: "side main";
+ }
+}
+
+.container-onecolumn {
+ max-width:1280px;
+ margin: auto;
+ padding-bottom: $lineheight;
+}
+
+$color-footer-back: get-color("dark");
+$color-footer-text: get-color("light");
+
+body {
+ background-color: $color-background;
+}
+
+footer {
+ padding-bottom:1.5rem;
+ padding-top: 1.5rem;
+ .columns {
+ @include md() {
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ grid-gap: $lineheight;
+ }
+
+ .col {
+ margin-bottom: $lineheight;
+ }
+ }
+}
+
+.home-toast {
+ max-width:800px;
+ width:100%;
+ margin:auto;
+}
+
+ul.social {
+ font-size: 1.5em;
+ padding-bottom: 1.5em;
+ margin: auto;
+ text-align: center;
+ display: flex;
+ justify-content: center;
+
+ li {
+ margin: 0;
+ list-style: none;
+ line-height: 1;
+
+ a,
+ a:visited {
+ color: $color-font-light;
+ background-color: var(--accent-color);
+ box-shadow: $btn-shadow;
+ padding: 0.3em;
+ width: 3rem;
+ aspect-ratio: 1;
+
+ display:flex;
+ align-items: center;
+ justify-content: center;
+ text-decoration: none;
+ border-radius: 100%;
+ line-height: 1;
+ margin:0.33rem;
+
+ &:hover {
+ background-color: var(--accent-color-hover);
+ }
+ }
+ }
+}
+
+iframe {
+ width: 100%;
+ height: 428px;
+ border:none;
+}
\ No newline at end of file
diff --git a/scss/custom/_mobile.scss b/scss/custom/_mobile.scss
new file mode 100644
index 0000000..4992fa3
--- /dev/null
+++ b/scss/custom/_mobile.scss
@@ -0,0 +1,73 @@
+html {
+ margin-left:0;
+ @include lg() {
+ margin-left:320px;
+ }
+}
+
+#searchfield {
+ outline-color: $color-background-alt;
+ border-radius: $card-radius;
+ box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, 0.4);
+
+}
+
+#mobile-sidebar {
+ position: fixed;
+ top:0;
+ left:-100vw;
+ width: 320px;
+ height:100vh;
+ transition: left 0.2s;
+ padding: 1rem;
+ overflow: hidden;
+ &.shown {
+ left:0;
+ }
+
+ @include lg() {
+ left:0;
+ }
+
+ z-index:10;
+ box-shadow: 0px 0px 3px 1px rgba(0,0,0,0.6);
+}
+
+img.myavatar {
+ height: 140px;
+ width: auto;
+ display: block;
+ margin: 1rem auto 1.5rem auto;
+ border: 3px solid $color-background;
+ box-shadow: 0px 2px 3px 1px rgba(0, 0, 0, 0.5);
+ border-radius: 8px;
+ @include old() {
+ height: 128px;
+ margin: 0.25rem auto 1rem auto;
+ }
+}
+
+.menu-button {
+ position:fixed;
+ bottom: 24px;
+ right: 24px;
+ background-color:rgba(0,0,0,0.2);
+ color:$color-font-light;
+ padding:0.75em;
+ border:none;
+ font-size:1.2rem;
+ display:flex;
+ align-content: center;
+ justify-content: center;
+ aspect-ratio: 1;
+ border-radius:999px;
+ z-index: 12;
+
+ &:hover {
+ background-color: $color-primary;
+ }
+
+ @include lg() {
+ display: none;
+ }
+}
\ No newline at end of file
diff --git a/scss/definitions/_borders.scss b/scss/definitions/_borders.scss
new file mode 100644
index 0000000..f5fc629
--- /dev/null
+++ b/scss/definitions/_borders.scss
@@ -0,0 +1,6 @@
+// BORDERS AND BORDER-RADIUSES
+
+$card-radius: 6px;
+$btn-radius: 3px;
+$well-radius: $card-radius;
+$border-size: 0px;
diff --git a/scss/definitions/_fonts.scss b/scss/definitions/_fonts.scss
new file mode 100644
index 0000000..3b87a47
--- /dev/null
+++ b/scss/definitions/_fonts.scss
@@ -0,0 +1,34 @@
+// FONTS
+// Define how looks the text
+
+$fontsize: 4.5mm;
+$fontsize-small:4.25mm;
+
+$fontweight_big: 300;
+$fontweight_base: 400;
+$fontweight_bold: 600;
+$fontweight_hyper: 800;
+
+$basefont: Inter,
+-apple-system,
+BlinkMacSystemFont,
+'Segoe UI',
+Cantarell,
+Roboto,
+Oxygen,
+Ubuntu,
+'Fira Sans',
+'Droid Sans',
+'Helvetica Neue',
+sans-serif;
+$titlefont: 'Comic Neue Bold Italic', sans-serif;
+
+@font-face {
+ font-family: 'Comic Neue Bold Italic';
+ src: local('Comic Neue Bold Italic'), local('ComicNeue-BoldItalic'),
+ url('../fonts/ComicNeue-BoldItalic.woff2') format('woff2'),
+ url('../fonts/ComicNeue-BoldItalic.woff') format('woff');
+ font-weight: bold;
+ font-style: italic;
+ font-display: swap;
+}
\ No newline at end of file
diff --git a/scss/definitions/_palette.scss b/scss/definitions/_palette.scss
new file mode 100644
index 0000000..fb05255
--- /dev/null
+++ b/scss/definitions/_palette.scss
@@ -0,0 +1,73 @@
+$whiteness_value: 0.8;
+
+// Couleurs de base du theme :
+
+$palette: (
+ "blue":#0f7e84,
+ "violet":#CB357D,
+ "red":#dc322f,
+ "orange":#cb4b16,
+ "green":#859900,
+ "skyblue":#0f7e84,
+ "dark": #002b36,
+ "light":#FDF7E7,
+ "yellow":#b58900,
+ "grey":#586e75,
+ "dark2":#073642,
+ "light2":#eee8d5);
+
+$semantics: (
+ "primary":"violet",
+ "secondary":"skyblue",
+ "warning":"orange",
+ "danger":"red",
+ "info":"skyblue",
+ "success":"green",
+ "muted":"grey",
+ "light":"light",
+ "dark":"dark");
+
+$helpers: (
+ "font":"dark2",
+ "font-light":"light",
+ "background":"light",
+ "background-alt":"light2",
+ "link":"violet",
+ "selection":"skyblue",
+ "mark":"yellow",
+);
+
+@function get-color($name) {
+ @if map-has-key($helpers, $name) {
+ @return map-get($palette, map-get($helpers, $name));
+ } @else {
+ @if map-has-key($semantics, $name) {
+ @return map-get($palette, map-get($semantics, $name));
+ } @else {
+ @return map-get($palette, $name);
+ }
+ }
+}
+
+// **Couleurs du theme**
+// Ne pas retirer ces couleurs, qui
+// sont essentielle pour que le framework functionne.
+// Pour les modifier, modifier le contenu du tableau $semantics.
+
+$color-link: get-color("link");
+$color-selection: get-color("selection");
+$color-mark: get-color("mark");
+$color-font: get-color("font");
+$color-font-light: get-color("font-light");
+
+$color-primary: get-color("primary");
+$color-secondary: get-color("secondary");
+$color-warning: get-color("warning");
+$color-danger: get-color("danger");
+$color-info: get-color("info");
+$color-success: get-color("success");
+
+$color-muted: get-color("muted");
+
+$color-background: get-color("background");
+$color-background-alt: get-color("background-alt");
diff --git a/scss/definitions/_shadows.scss b/scss/definitions/_shadows.scss
new file mode 100644
index 0000000..332c225
--- /dev/null
+++ b/scss/definitions/_shadows.scss
@@ -0,0 +1,10 @@
+// SHADOWS
+// Define how looks the shadows and the relief effects
+
+$large-shadow: 0px 2px 4px rgba(0, 0, 0, 0);
+$narrow-shadow: 0px 1px 2px rgba(0, 0, 0, 0);
+$inset-shadow: inset 0px -2px 0px rgba(0, 0, 0, 0);
+$inset-shadow-inverted: inset 0px 2px 0px rgba(0, 0, 0, 0);
+$inset-relief: inset 0px 2px 0px rgba(255, 255, 255, 0);
+
+$btn-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.3);
\ No newline at end of file
diff --git a/scss/definitions/_sizing.scss b/scss/definitions/_sizing.scss
new file mode 100644
index 0000000..0dfe0e5
--- /dev/null
+++ b/scss/definitions/_sizing.scss
@@ -0,0 +1,35 @@
+// SIZING
+// All the spacing and sizing variables
+
+$baseline: 1.6;
+
+$lineheight: $baseline * 1rem;
+$lineheight_half: $lineheight/2;
+$lineheight_quarter: $lineheight/4;
+$lineheight_rel: $baseline * 1em;
+
+$card-header-vmargin: $lineheight_rel / 2;
+$card-header-hmargin: 0px;
+$card-header-padding: $lineheight_rel;
+$card-header-width: 85%;
+$card-header-position:0px;
+// Buttons
+$button_large: $lineheight_rel;
+$button_small: $lineheight_rel / 4;
+$button-group-margin: 0;
+
+// Responsives sizes
+// - sm : Small tablets and large smartphones (landscape view)
+// - md : Small tablets (portrait view)
+// - lg : Tablets and small desktops
+// - xl : Large tablets and desktops
+// - xxl : Very large desktops
+$screen-sm-min: 576px;
+$screen-md-min: 768px;
+$screen-lg-min: 992px;
+$screen-xl-min: 1200px;
+$screen-xxl-min: 1600px;
+
+// Containers size
+$container-size: $screen-xl-min;
+$container-size-large: $screen-xxl-min;
diff --git a/scss/mixins/_borders.scss b/scss/mixins/_borders.scss
new file mode 100644
index 0000000..d6bb913
--- /dev/null
+++ b/scss/mixins/_borders.scss
@@ -0,0 +1,15 @@
+// Border, border radius and margin
+
+@mixin borders() {
+ border: $border-size solid rgba(0, 0, 0, 0.3)
+}
+
+@mixin prefer-no-borders() {
+ &:not(:hover) {
+ border-color:transparent;
+ }
+}
+
+@mixin border-radius($border-radius) {
+ border-radius: $border-radius $border-radius $border-radius $border-radius;
+}
diff --git a/scss/mixins/_btns.scss b/scss/mixins/_btns.scss
new file mode 100644
index 0000000..1bc65de
--- /dev/null
+++ b/scss/mixins/_btns.scss
@@ -0,0 +1,48 @@
+@mixin button($size) {
+ @include button-layout($size);
+ @include shape-style($size);
+ @include button-hover();
+ font-weight: $fontweight_base;
+}
+
+@mixin button-layout($size) {
+ padding: $size;
+ padding-top: $size/3;
+ padding-bottom: $size/3;
+ margin:$size/2;
+ margin-top: $size/3;
+ margin-bottom: $lineheight;
+ //font-size: 4.75mm;
+ line-height:$lineheight;
+ height:auto;
+}
+
+@mixin button-hover() {
+ transition: background-color .2s, border .2s, box-shadow .2s, color .2s;
+ &:hover, &:active {
+ background-color:transparent;
+ }
+}
+
+@mixin button-fullcontrol($background-color, $hover-color, $text-color) {
+ @include colorize-shape($background-color);
+ outline-color: $background-color;
+ color:$text-color;
+ &:visited {
+ @include colorize-shape($background-color);
+ color:$text-color;
+ }
+ &, &:visited, &:not(.disabled):not(:disabled) {
+ &:hover, &:active {
+ @include colorize-shape($hover-color);
+ color:lighten($text-color, 5%);
+ outline-color: $hover-color;
+ box-shadow:none;
+ }
+ }
+}
+
+@mixin button-color($background-color) {
+ @include button-fullcontrol($background-color, mix($background-color, getTextColorFromBackground($background-color), 85%), getTextColorFromBackground($background-color));
+ box-shadow: $narrow-shadow;
+}
diff --git a/scss/mixins/_colors.scss b/scss/mixins/_colors.scss
new file mode 100644
index 0000000..a08ed32
--- /dev/null
+++ b/scss/mixins/_colors.scss
@@ -0,0 +1,59 @@
+ // FUNCTIONS TO GET MORE EASILY COLORS
+ @function list-colors() {
+ @return $semantics;
+ }
+
+ @function luminance($color) {
+ $c_red: red($color);
+ $c_grn: green($color);
+ $c_blu: blue($color);
+
+ $luminance: $c_red*0.299 + $c_grn*0.587 + $c_blu*0.114;
+
+ @return $luminance
+ }
+
+ @function getFontColor() {
+ @return getTextColorFromBackground(get-color("background-alt"));
+ }
+
+ @function getTextColorFromBackground($background-color) {
+ @if (luminance($background-color) < 255 * $whiteness_value) {
+ @return $color-font-light;
+ } @else {
+ @return $color-font;
+ }
+ }
+
+ @function accentuate($color) {
+ @if (luminance($color) > 64) {
+ @return darken($color, 7.5%);
+ } @else {
+ @return lighten($color, 4%);
+ }
+ }
+
+ @function dim($color) {
+ @if (luminance($color) > 255 * $whiteness_value) {
+ @return transparentize($color, 0.8);
+ } @else {
+ @return transparentize($color, 0.6);
+ }
+ }
+
+ // fonction texte et background
+
+ @mixin text-color($text-color) {
+ color: $text-color;
+ }
+
+ @mixin background-color($background-color) {
+ background-color: $background-color;
+ color: getTextColorFromBackground($background-color);
+ }
+
+ @mixin accent-color($accent-color) {
+ --accent-color: #{$accent-color};
+ --text-color-contrast: #{getTextColorFromBackground($accent-color)};
+ --accent-color-hover: #{accentuate($accent-color)};
+ }
\ No newline at end of file
diff --git a/scss/mixins/_li.scss b/scss/mixins/_li.scss
new file mode 100644
index 0000000..1a78451
--- /dev/null
+++ b/scss/mixins/_li.scss
@@ -0,0 +1,13 @@
+@mixin li-no-margin() {
+ li {
+ margin: 0;
+ }
+}
+
+@mixin li-flex() {
+ display:flex;
+ flex-direction: row;
+ align-items: flex-start;
+ @include li-no-margin();
+ list-style: none;
+}
diff --git a/scss/mixins/_panels.scss b/scss/mixins/_panels.scss
new file mode 100644
index 0000000..46dcbf5
--- /dev/null
+++ b/scss/mixins/_panels.scss
@@ -0,0 +1,58 @@
+@mixin panel($size) {
+ @include border-radius($card-radius);
+ background-color: $color-background-alt;
+ box-shadow: $large-shadow;
+ border: none;
+ margin:0;
+ margin-bottom:$lineheight;
+
+ box-shadow: $btn-shadow;
+
+ & > * {
+ margin-left: $size / 2;
+ margin-right: $size / 2;
+ &:first-child,
+ &.sr-only:first-child ~ * {
+ margin-top: $size;
+ &.card-header {
+ margin-top:$card-header-vmargin;
+ letter-spacing: normal;
+ }
+ }
+ &:last-child {
+ margin-bottom: $size;
+ &.card-header {
+ margin-bottom:$card-header-vmargin;
+ }
+ }
+ }
+}
+
+@mixin panel-header($size) {
+ font-family: $basefont;
+ font-size:1em;
+ font-weight: $fontweight_bold;
+
+
+ padding: $size/2 $card-header-padding;
+ padding-bottom: $size/2!important;
+ margin:$lineheight_rel / 2 $card-header-hmargin;
+ // margin-bottom:$lineheight_rel / 2;
+ // margin-top:$lineheight_rel / 2;
+ line-height:1;
+
+ position:relative;
+ left: $card-header-position;
+ width:$card-header-width;
+
+ @include shape-style($size);
+ border-radius:0;
+ &:first-child {
+ border-top-left-radius: $card-radius;
+ border-top-right-radius: $card-radius;
+ }
+ &:last-child {
+ border-bottom-left-radius: $card-radius;
+ border-bottom-right-radius: $card-radius;
+ }
+}
diff --git a/scss/mixins/_responsive.scss b/scss/mixins/_responsive.scss
new file mode 100644
index 0000000..2a423a8
--- /dev/null
+++ b/scss/mixins/_responsive.scss
@@ -0,0 +1,91 @@
+// MIXINS RESPONSIVES
+
+// Small devices
+@mixin sm {
+ @media (min-width: #{$screen-sm-min}) {
+ @content;
+ }
+}
+
+// Medium devices
+@mixin md {
+ @media (min-width: #{$screen-md-min}) {
+ @content;
+ }
+}
+
+// Large devices
+@mixin lg {
+ @media (min-width: #{$screen-lg-min}) {
+ @content;
+ }
+}
+
+// Extra large devices
+@mixin xl {
+ @media (min-width: #{$screen-xl-min}) {
+ @content;
+ }
+}
+
+// Extra large desktops
+@mixin xxl {
+ @media (min-width: #{$screen-xxl-min}) {
+ @content;
+ }
+}
+
+// Old desktop
+@mixin old {
+ @media (max-width: 1366px) and (max-height: 768px) {
+ @content;
+ }
+}
+
+// Custom devices
+@mixin rwd($screen) {
+ @media (min-width: $screen+'px' ) {
+ @content;
+ }
+}
+
+@mixin container($size, $padding) {
+ padding-left: $padding;
+ padding-right: $padding;
+ max-width: $size;
+ margin:auto;
+}
+
+@mixin responsive() {
+ @content;
+
+ &-sm {
+ @include sm() {
+ @content;
+ }
+ }
+
+ &-md {
+ @include md() {
+ @content;
+ }
+ }
+
+ &-lg {
+ @include lg() {
+ @content;
+ }
+ }
+
+ &-xl {
+ @include xl() {
+ @content;
+ }
+ }
+
+ &-xxl {
+ @include xxl() {
+ @content;
+ }
+ }
+}
\ No newline at end of file
diff --git a/scss/mixins/_shape.scss b/scss/mixins/_shape.scss
new file mode 100644
index 0000000..253d77b
--- /dev/null
+++ b/scss/mixins/_shape.scss
@@ -0,0 +1,34 @@
+@mixin biseau($size) {
+ position: relative;
+ z-index: 1;
+ overflow: visible;
+
+ &:before {
+ content: " ";
+ position: absolute;
+ top: 0;
+ left: -$size/2;
+ right: -$size/2;
+ bottom: 0;
+ z-index: -1;
+ transform: skewX(-15deg);
+ transition: background-color 0.3s;
+ border-radius: $card-radius;
+ }
+}
+
+@mixin shape-style($size) {
+ @include borders();
+ @include border-radius($btn-radius);
+ @include biseau($size);
+
+ background-color:transparent;
+}
+
+@mixin colorize-shape($background-color) {
+ background-color: $background-color;
+
+ &:before {
+ background-color: $background-color;
+ }
+}
diff --git a/scss/style.scss b/scss/style.scss
new file mode 100644
index 0000000..f565a77
--- /dev/null
+++ b/scss/style.scss
@@ -0,0 +1,25 @@
+/*
+ Theme Name: Kazhnuz Space
+ Theme URI: https://git.kobold.cafe/quarante-douze/qdouze2-wordpress-theme
+ Author: Kazhnuz
+ Author URI: https://kazhnuz.space
+ Description: The default theme for Kazhnuz Space, my personnal blog.
+ Version: 0.2
+ License: GNU General Public License v3 or later
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
+ Tags: blog, two-columns, right-sidebar
+ Text Domain: kspace-wordpress-theme
+
+ This theme is licensed under the GPLv3.
+*/
+
+@import 'custom/angled-edges';
+
+@import 'dep';
+@import 'definitions';
+@import 'mixins';
+
+@import 'core';
+@import 'drawing';
+@import 'utils';
+@import 'global';
diff --git a/scss/utils/_a11y.scss b/scss/utils/_a11y.scss
new file mode 100644
index 0000000..29b0519
--- /dev/null
+++ b/scss/utils/_a11y.scss
@@ -0,0 +1,69 @@
+.screen-reader-text, .sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+ opacity: 0;
+ transition-delay: .8s;
+ transition-property: opacity;
+ transition-duration: 0.2s;
+}
+
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
+
+a.sr-hover {
+ position: relative;
+ overflow: visible;
+}
+
+.sr-hover:hover .sr-only {
+ position: absolute;
+ display: block;
+ width: auto;
+ height: auto;
+ clip: auto;
+ overflow: visible;
+ background-color: rgba(0, 0, 0, 0.8);
+ border-radius: 6px;
+ top: 110%;
+ left: 50%;
+ transform: translateX(-50%);
+ white-space: nowrap;
+ padding: 3px 9px;
+ margin: 0px;
+ font-size: 1rem;
+ z-index: 10;
+ border: 1px solid rgba(255,255,255,0.3);
+ opacity: 1;
+}
+
+.article img::before {
+ content:"alt";
+}
+
+.skip {
+ position: absolute;
+ left: -10000px;
+ top: auto;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+}
+
+.skip:focus-within {
+ position: static;
+ width: auto;
+ height: auto;
+}
\ No newline at end of file
diff --git a/scss/utils/_align.scss b/scss/utils/_align.scss
new file mode 100644
index 0000000..d543560
--- /dev/null
+++ b/scss/utils/_align.scss
@@ -0,0 +1,16 @@
+.flex-that {
+ display: flex;
+ justify-content: space-between;
+}
+
+.align {
+ &-center {text-align: center;text-indent: 0!important;}
+ &-left {text-align: left;}
+ &-right {text-align: right;}
+}
+
+.icon-fw {
+ width: 1em;
+ display: inline-block;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/scss/utils/_borders.scss b/scss/utils/_borders.scss
new file mode 100644
index 0000000..a8f7b0e
--- /dev/null
+++ b/scss/utils/_borders.scss
@@ -0,0 +1,8 @@
+.round, .pill {
+ border-radius: 9999px;
+}
+
+.no-borders {
+ border-width:0px;
+ border-style:none;
+}
diff --git a/scss/utils/_colorize.scss b/scss/utils/_colorize.scss
new file mode 100644
index 0000000..6557249
--- /dev/null
+++ b/scss/utils/_colorize.scss
@@ -0,0 +1,93 @@
+@mixin heading-color($background-color) {
+
+ & .card-header,
+ & .menu-header,
+ &.header-bg th {
+ @include colorize-shape($background-color);
+ color: getTextColorFromBackground($background-color);
+ }
+
+ th {
+ color: $background-color;
+ }
+}
+
+@mixin bg-color($background-color) {
+ @include background-color($background-color);
+
+ a {
+ color:currentColor;
+ outline-color: currentColor;
+ }
+}
+
+.bg-accent {
+ $background-color: var(--accent-color);
+}
+
+.bg-dark {
+ @include bg-color(get-color("dark"));
+}
+
+// .bg {
+
+// @each $name,
+// $color in list-colors() {
+// &-#{$name} {
+// @include bg-color(get-color($name));
+// &:hover {
+// @include bg-color(get-color($name));
+// }
+// }
+// }
+// }
+
+// .text {
+
+// @each $name,
+// $color in list-colors() {
+// &-#{$name} {
+// @include text-color(get-color($name));
+// }
+// }
+// }
+
+// .btn {
+
+// @each $name,
+// $color in list-colors() {
+// &-#{$name} {
+// @include button-color(get-color($name));
+// }
+// }
+// }
+
+.c, .btn, .head, .text {
+ @each $name,
+ $color in list-colors() {
+ &-#{$name} {
+ @include accent-color(get-color($name));
+ }
+ }
+}
+
+// .head {
+
+// @each $name,
+// $color in list-colors() {
+// &-#{$name} {
+// @include heading-color(get-color($name));
+// }
+// }
+// }
+
+.fg-light {
+ --text-color:#{$color-font-light};
+ --link-color-hover:#{transparentize($color-font-light, 0.7)};
+}
+
+.fg-dark {
+ color: $color-font;
+ --text-color:#{$color-font};
+ --link-color-hover:#{transparentize($color-font, 0.85)};
+}
\ No newline at end of file
diff --git a/scss/utils/_display.scss b/scss/utils/_display.scss
new file mode 100644
index 0000000..90b521d
--- /dev/null
+++ b/scss/utils/_display.scss
@@ -0,0 +1,17 @@
+.d-none {
+ @include responsive() {
+ display: none !important;
+ }
+}
+
+.d-block {
+ @include responsive() {
+ display: block!important;
+ }
+}
+
+.d-flex {
+ @include responsive() {
+ display: flex!important;
+ }
+}
\ No newline at end of file
diff --git a/scss/utils/_flex.scss b/scss/utils/_flex.scss
new file mode 100644
index 0000000..203bf6a
--- /dev/null
+++ b/scss/utils/_flex.scss
@@ -0,0 +1,35 @@
+.f-column {
+ display:flex;
+ flex-direction: column;
+ &.reverse {
+ flex-direction:column-reverse;
+ }
+}
+
+.f-row {
+ display:flex;
+ flex-direction: row;
+ &.reverse {
+ flex-direction:row-reverse;
+ }
+}
+
+.f-start {
+ justify-content: flex-start;
+}
+
+.f-end {
+ justify-content: flex-end;
+}
+
+.f-center {
+ justify-content: center;
+}
+
+.f-around {
+ justify-content: space-around;
+}
+
+.f-between {
+ justify-content: space-between;
+}
diff --git a/scss/utils/_lists.scss b/scss/utils/_lists.scss
new file mode 100644
index 0000000..7d366c7
--- /dev/null
+++ b/scss/utils/_lists.scss
@@ -0,0 +1,3 @@
+.no-pills {
+ list-style:none;
+}
diff --git a/scss/utils/_sizing.scss b/scss/utils/_sizing.scss
new file mode 100644
index 0000000..9e2fc13
--- /dev/null
+++ b/scss/utils/_sizing.scss
@@ -0,0 +1,67 @@
+@mixin addmargins($name, $size) {
+ &-#{$name} {
+ margin:$size;
+ }
+
+ &b-#{$name} {
+ margin-bottom:$size;
+ }
+
+ &r-#{$name} {
+ margin-right:$size;
+ }
+
+ &l-#{$name} {
+ margin-left:$size;
+ }
+
+ &t-#{$name} {
+ margin-top:$size;
+ }
+}
+
+@mixin addpaddings($name, $size) {
+ &-#{$name} {
+ padding:$size;
+ }
+
+ &b-#{$name} {
+ padding-bottom:$size;
+ }
+
+ &r-#{$name} {
+ padding-right:$size;
+ }
+
+ &l-#{$name} {
+ padding-left:$size;
+ }
+
+ &t-#{$name} {
+ padding-top:$size;
+ }
+}
+
+.m {
+ @include addmargins("half", $lineheight * .5);
+ @for $i from 0 through 4 {
+ @include addmargins($i, $lineheight*$i)
+ }
+}
+
+.p {
+ @include addpaddings("half", $lineheight * .5);
+ @for $i from 0 through 4 {
+ @include addpaddings($i, $lineheight*$i)
+ }
+}
+
+.ellipsis {
+ flex: 1;
+
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ width: 0;
+ padding-right: 6px;
+}
\ No newline at end of file