Compare commits

..

38 commits
2.0 ... master

Author SHA1 Message Date
Kazhnuz
222dbd6da1 feat: add drone config
All checks were successful
continuous-integration/drone Build is passing
2024-10-12 21:54:45 +02:00
Kazhnuz
6023f8a7cc fix: ajout separator 2024-10-05 18:24:02 +02:00
Kazhnuz
155849deb0 meta: v3.0.0 2024-10-05 18:17:08 +02:00
Kazhnuz
8a343855f1 fix(button): ajout de couleurs de hover 2024-10-05 18:14:52 +02:00
Kazhnuz
d11d41f082 fix: corrige la largeur de la textarea 2024-10-05 18:05:23 +02:00
Kazhnuz
3a0801c8fe feat(table): ajoute support des tableaux 2024-10-05 18:02:54 +02:00
Kazhnuz
b6ad130f0f fix: corrige position des checkboxes 2024-10-05 17:42:12 +02:00
Kazhnuz
78b9f5d65b fix: responsive img 2024-10-05 17:41:09 +02:00
Kazhnuz
9548c0dcdb feat: ajoute support hgroup 2024-10-05 17:25:05 +02:00
Kazhnuz
2aa2555b26 meta: maj changelog 2024-10-05 17:16:08 +02:00
Kazhnuz
dd6b841440 feat: support textarea et select 2024-10-05 17:13:50 +02:00
Kazhnuz
950c395a19 feat: ajout des champs de formulaire 2024-10-05 16:57:16 +02:00
Kazhnuz
6874f444b4 feat: ajoute un bouton télécharger 2024-10-05 16:57:06 +02:00
Kazhnuz
6de0c5f595 feat: ajout changelog au site 2024-09-29 16:45:24 +02:00
Kazhnuz
e18379dd39 fix: correction color mark 2024-09-29 16:45:17 +02:00
Kazhnuz
30e7fadd7c feat: ajouts outil flexs 2024-09-29 16:31:01 +02:00
Kazhnuz
46f510dab3 improvement: plus d'info customisation 2024-09-29 16:15:43 +02:00
Kazhnuz
b6ca9590e1 feat: meilleur support du code 2024-09-29 16:12:08 +02:00
Kazhnuz
81e467a856 doc: ajoute des emoji sur les liens 2024-09-29 16:11:55 +02:00
Kazhnuz
db175d148d feat: ajout info customisation 2024-09-23 10:33:29 +02:00
Kazhnuz
961ea75e13 chore: rebrand en moineau
Fixes #2
2024-09-23 10:18:13 +02:00
Kazhnuz
a5f0de5ae0 feat: nouvelle génération de site 2024-09-23 10:14:52 +02:00
Kazhnuz
726e855315 feat: ajout du sommaire 2024-09-23 10:13:26 +02:00
Kazhnuz
20a9b1cbaf fix: amelioration responsive 2024-09-23 10:10:28 +02:00
Kazhnuz
e304563ca4 feat: simplification du style 2024-09-23 10:00:11 +02:00
Kazhnuz
f8f918279c feat: ajoute un petit .flex simple 2024-09-23 09:47:15 +02:00
Kazhnuz
eeb6b298c4 fix: simplifications 2024-09-23 09:00:22 +02:00
Kazhnuz
fe54b8668e fix: simplification stylesheet 2024-09-22 22:37:52 +02:00
Kazhnuz
3d009750d0 feat: ajout du hover 2024-09-22 19:01:31 +02:00
Kazhnuz
2763e099b3 feat: ajout navbar
Fixes #9
2024-09-22 18:55:39 +02:00
Kazhnuz
84fd7b6793 feat: support des couleurs d'accents
Fixes #4
2024-09-22 18:48:26 +02:00
Kazhnuz
8ff3ea2933 feat: simplification taille 2024-09-22 18:33:17 +02:00
Kazhnuz
821251447f feat: simplication des titres 2024-09-22 18:10:43 +02:00
Kazhnuz
db444b5fe7 feat: suppression du wrapper 2024-09-22 17:59:41 +02:00
Kazhnuz
0782136eb7 chore: remove debug class 2024-09-22 17:58:30 +02:00
Kazhnuz
4dfaa842bb feat: utilisation des polices de navigateurs
Fixes #3
2024-09-22 17:57:09 +02:00
Kazhnuz
a95fe8b83c chore: passage sous npm, changement de version 2024-09-22 17:52:56 +02:00
Kazhnuz
59d1f36e75 feat: remove generated css from archive 2024-09-22 17:47:18 +02:00
24 changed files with 751 additions and 763 deletions

32
.drone.yml Normal file
View file

@ -0,0 +1,32 @@
kind: pipeline
name: production
when:
event: [ push ]
branch: [ master ]
clone:
git:
image: plugins/git
pull: true
steps:
- name: build
image: node:latest
commands:
- npm i
- npm run compile
- name: deploy
image: drillster/drone-rsync
settings:
hosts:
from_secret: deploy_host
target: /var/www/moineau.kazhnuz.space
source: dist/*
user:
from_secret: deploy_user
key:
from_secret: deploy_key
when:
branch: master
delete: true

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
dist/
package-lock.json
node_modules/

View file

@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.0.0] - 2024-10-05
- Rebrand du projet en moineau.css
- Simplification du code pour le rendre plus léger
- Ajout de la customisation de couleurs
- Support du mode sombre
- Support des éléments HTML suivants :
- Balise `<details>`
- Support des éléments de formulaires
- Support des hgroups
- Support des tableaux
- Ajout de classes utilitaires
- `.flex` afin d'aligner simplement horizontalement des éléments
- Ajout d'une navbar avec un outil pour séparer en bloc
## [2.0.0] - 2019-11-07
### Added

View file

@ -1,4 +1,72 @@
clear-typography
================
# Moineau
Un projet CSS permettant d'avoir une typo plutot propre pour un blog/site, basé sur la police clear-sans, et pensé pour être utilisé en premier lieu avec bootstrap.
**Moineau** est un projet de feuille de style minimale inspirée des sites [bettermotherfuckingwebsite](http://bettermotherfuckingwebsite.com/) et [thebestmotherfucking.website](https://thebestmotherfucking.website/). Son but est d'être utilisé en remplacement du style par défaut de navigateur web pour des pages web "brutes", tout en restant agréable et fonctionnel.
Son but est d'avoir un style agréable à l'oeil et fonctionnel, assez minimaliste, utilisant les balises et propriété de l'HTML brut. Il n'y a pas de classe utilisé, ni de fonctionnalité de layout (à l'exception d'un support des navbar via `<nav>` qui donne des navbar horizontales).
Si le projet utilise surtout les balises standard du HTML, quelques utilitaires vont être ajoutés.
<center><a class="button" href="https://git.kobold.cafe/kazhnuz/moineau/releases">Télécharger</a></center>
## Fonctionnalités
Moineau supporte les fonctionnalités suivantes de base :
- Feuille de style simple et légère (<7 ko minifié)
- Responsive (en tout cas le plus possible)
- Concentré sur la typographie et n'utilisant pas de classes
- Gestion des couleurs
- Support du mode sombre
- Customisation des couleurs via des variables
## Pourquoi
Tout les sites n'ont pas besoins de design spécifique, et le but de cette feuille de style est de fournir une feuille de style simple et customisable pour des sites "tout bêtes". Il a notamment été *optimisé* pour un cas spécifique : la génération de page web à partir de page markdown, mais supporte quelques cas en plus (notamment les balises standards du HTML).
L'idée est que dans le cas de ce genre de site peuvent avoir besoin de style simple et léger, s'adapter à de différents écrans et surtout lisible : pas de lignes trop longues, et avec un texte aéré (interligne, fin de paragraphes). Le but est d'avoir un côté un peu moderne aussi, avec quelques touches de couleurs.
L'idée est de pouvoir générer simplement un blog ou un site simple pour les gens en ayant besoin. Je ne pense pas que ce sera beaucoup utilisé, mais cela peut servir dans quelques cas spécifiques ^^
## Customiser
La couleur d'accents se customise en modifiant quatre variables :
```css
:root {
--accent-color-dark: #1971c2;
--accent-color-light: #d0ebff;
--accent-color-dark-hover: #1864ab;
--accent-color-light-hover: #e7f5ff;
}
```
La première détermine la couleur d'accent sombre (donc écrite sur fond clair, et en fond sur fond sombre), et la seconde celle d'accent clair (du coup l'inverse de la sombre : écrite sur fond sombre, et en fond sur fond clair). Les deux suivantes sont les mêmes, mais avec cette fois en variante pour le survol de la souris.
Toute la palette peut également être customisé avec les variables css, de la manière suivante :
```css
:root {
--text-color: #212529;
--border-color: rgba(0,0,0,0.1);
--hover-color: rgba(0,0,0,0.05);
--background-color: #f8f9fa;
--well-color: #e9ecef;
}
@media (prefers-color-scheme: dark) {
:root {
--text-color: #e9ecef;
--background-color: #212529;
--well-color: #343a40;
--border-color: rgba(255,255,255,0.2);
--hover-color: rgba(255,255,255,0.1);
}
}
```
## Crédits
- Les couleurs proviennent de [open-color](https://yeun.github.io/open-color/)
- La photo de chat utilisé dans les exemples a été publiée sur Wikimedia.

View file

@ -1,283 +0,0 @@
/* ------------------ FONT LOADING ------------------- */
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-Light-webfont.eot");
src: url("../fonts/OpenSans-Light-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Light-webfont.woff2") format("woff2"), url("../fonts/OpenSans-Light-webfont.woff") format("woff"), url("../fonts/OpenSans-Light-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Light-webfont.svg#open_sansbold") format("svg");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-LightItalic-webfont.eot");
src: url("../fonts/OpenSans-LightItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-LightItalic-webfont.woff2") format("woff2"), url("../fonts/OpenSans-LightItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-LightItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-LightItalic-webfont.svg#open_sansbold") format("svg");
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-Regular-webfont.eot");
src: url("../fonts/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Regular-webfont.woff2") format("woff2"), url("../fonts/OpenSans-Regular-webfont.woff") format("woff"), url("../fonts/OpenSans-Regular-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Regular-webfont.svg#open_sansbold") format("svg");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-Italic-webfont.eot");
src: url("../fonts/OpenSans-Italic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Italic-webfont.woff2") format("woff2"), url("../fonts/OpenSans-Italic-webfont.woff") format("woff"), url("../fonts/OpenSans-Italic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Italic-webfont.svg#open_sansbold") format("svg");
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-Semibold-webfont.eot");
src: url("../fonts/OpenSans-Semibold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Semibold-webfont.woff2") format("woff2"), url("../fonts/OpenSans-Semibold-webfont.woff") format("woff"), url("../fonts/OpenSans-Semibold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Semibold-webfont.svg#open_sansbold") format("svg");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-SemiboldItalic-webfont.eot");
src: url("../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-SemiboldItalic-webfont.woff2") format("woff2"), url("../fonts/OpenSans-SemiboldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-SemiboldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-SemiboldItalic-webfont.svg#open_sansbold") format("svg");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-Bold-webfont.eot");
src: url("../fonts/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Bold-webfont.woff2") format("woff2"), url("../fonts/OpenSans-Bold-webfont.woff") format("woff"), url("../fonts/OpenSans-Bold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Bold-webfont.svg#open_sansbold") format("svg");
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-BoldItalic-webfont.eot");
src: url("../fonts/OpenSans-BoldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-BoldItalic-webfont.woff2") format("woff2"), url("../fonts/OpenSans-BoldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-BoldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-BoldItalic-webfont.svg#open_sansbold") format("svg");
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-ExtraBold-webfont.eot");
src: url("../fonts/OpenSans-ExtraBold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-ExtraBold-webfont.woff2") format("woff2"), url("../fonts/OpenSans-ExtraBold-webfont.woff") format("woff"), url("../fonts/OpenSans-ExtraBold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-ExtraBold-webfont.svg#open_sansbold") format("svg");
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: "OpenSans";
src: url("../fonts/OpenSans-ExtraBoldItalic-webfont.eot");
src: url("../fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-ExtraBoldItalic-webfont.woff2") format("woff2"), url("../fonts/OpenSans-ExtraBoldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-ExtraBoldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-ExtraBoldItalic-webfont.svg#open_sansbold") format("svg");
font-weight: 800;
font-style: italic;
}
html {
font-family: OpenSans, sans-serif;
text-align: left;
font-size: 18px;
}
body {
line-height: 1.75rem;
color: #444;
font-weight: 400;
}
.debug {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.25) 0, rgba(255, 255, 255, 0) 1px);
background-repeat: repeat-y;
background-size: 100% 1.75rem;
}
.night-mode {
color: #BBB;
}
strong {
font-weight: 600;
}
em {
font-style: italic;
}
a {
color: #2484c1;
text-decoration: none;
}
p, time {
padding: 0;
margin: 0;
margin-bottom: 1.75rem;
}
p:last-child, time:last-child {
margin-bottom: 0;
}
ul, ol {
padding: 0;
margin: 0;
margin-bottom: 1.75rem;
}
ul ul, ol ul {
margin-bottom: 0;
}
ul li, ol li {
margin-left: 1.75rem;
}
/* sup, sub */
sup, sub {
margin: 0;
padding: 0;
line-height: 1.75rem;
font-size: 0.8rem;
vertical-align: baseline;
position: relative;
}
sup {
top: -0.4375rem;
}
sub {
top: 0.4375rem;
}
::selection {
background: #2484c1;
color: #fff;
}
::-moz-selection {
background: #2484c1;
color: #fff;
}
/* ------------------ WRAPPERS ------------------- */
.text-wrapper {
width: 720px;
margin: auto;
}
/* ------------------ TITLES ------------------- */
h1, h2, h3, h4, h5, h6, h7 {
text-align: left;
font-size: 18px;
line-height: 1.75rem;
padding: 0;
margin: 0;
font-weight: 400;
}
h1 {
font-size: 2.3333333rem;
line-height: 3.5rem;
margin-bottom: 1.75rem;
font-weight: 700;
}
h2 {
font-size: 2rem;
line-height: 3.5rem;
margin-bottom: 1.75rem;
font-weight: 700;
}
h3 {
font-size: 1.5rem;
line-height: 1.75rem;
margin-bottom: 1.75rem;
font-weight: 700;
}
h4 {
font-size: 1.5rem;
line-height: 1.75rem;
margin-bottom: 1.75rem;
font-weight: 600;
}
h5 {
font-size: 1.333333rem;
line-height: 1.75rem;
margin-bottom: 1.75rem;
font-weight: 600;
}
h6 {
font-size: 1.1rem;
line-height: 1.75rem;
margin-bottom: 1.75rem;
font-weight: 600;
}
/* ------------------ HR ------------------- */
hr {
border-top: 0px;
border-left: 0px;
border-right: 0px;
border-bottom: 1px;
border-color: rgba(1, 1, 1, 0.15);
border-style: solid;
padding: 0;
margin: 0;
margin-bottom: 1.75rem;
}
/* ------------------ QUOTE ------------------- */
blockquote {
border-width: 0 0 0 0.4375rem;
border-style: solid;
border-radius: 0.21875rem;
margin: 0;
margin-bottom: 1.75rem;
padding: 1.75rem;
font-size: 1.1rem;
max-width: 100%;
overflow: auto;
border-color: rgba(1, 1, 1, 0.15);
}
.night-mode blockquote {
border-color: rgba(255, 255, 255, 0.15);
}
pre {
border-width: 0 0 0 0.4375rem;
border-style: solid;
border-radius: 0.21875rem;
margin: 0;
margin-bottom: 1.75rem;
padding: 1.75rem;
font-size: 1.1rem;
max-width: 100%;
overflow: auto;
border-color: rgba(1, 1, 1, 0.2);
background-color: #EEE;
}
.night-mode pre {
background-color: #222;
border-color: rgba(255, 255, 255, 0.2);
}
/* ------------------ SPECIAL STYLING ------------------- */
mark {
border-radius: 0.2em;
padding: 0 0.4375rem 0 0.4375rem;
background-color: rgba(255, 255, 0, 0.33);
color: inherit;
}
.night-mode mark {
background-color: rgba(128, 128, 0, 0.66);
}
/* ------------------ SPECIAL STYLING ------------------- */
.time {
font-style: italic;
text-align: right;
width: 100%;
display: block;
font-size: 0.9rem;
}
/*# sourceMappingURL=clear-typography.css.map */

View file

@ -1 +0,0 @@
{"version":3,"sourceRoot":"","sources":["../scss/_font-face.scss","../scss/clear-typography.scss"],"names":[],"mappings":"AAAA;AAEA;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;EACA;EACA;EAKA;EACA;;ACvGJ;EACC;EACA;EACA,WAhBY;;;AAmBb;EACC,aAfY;EAgBZ;EACA;;;AAGD;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACC;;;AAGD;EACC;;;AAGD;EACE;EACA;;;AAGF;EAxCE;EACA;EACA,eALW;;AA6CX;EACE;;;AAIJ;EA/CE;EACA;EACA,eALW;;AAoDX;EACE;;AAEF;EACE,aAxDS;;;AA4Db;AAEA;EACE;EACA;EACA,aAjEW;EAkEX;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAIF;EAAc;EAAqB;;;AACnC;EAAmB;EAAqB;;;AAExC;AAEA;EACE;EACA;;;AAGF;AAUA;EACE;EACD,WA3GY;EA4GZ,aAvGY;EAwGZ;EACA;EACA;;;AAGD;EAfC;EACA;EACA,eAhGY;EAiGZ,aAa2B;;;AAG5B;EAnBC;EACA;EACA,eAhGY;EAiGZ,aAiBmB;;;AAGpB;EAvBC;EACA;EACA,eAhGY;EAiGZ,aAqBqB;;;AAGtB;EA3BC;EACA;EACA,eAhGY;EAiGZ,aAyBqB;;;AAGtB;EA/BC;EACA;EACA,eAhGY;EAiGZ,aA6B0B;;;AAG3B;EAnCC;EACA;EACA,eAhGY;EAiGZ,aAiCqB;;;AAGtB;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAhJW;;;AAmJb;AAeA;EAZE;EACD;EACA;EACA;EACA,eA1JY;EA2JZ,SA3JY;EA4JT;EAEH;EACG;EAKH;;AAEA;EACG;;;AAIJ;EArBE;EACD;EACA;EACA;EACA,eA1JY;EA2JZ,SA3JY;EA4JT;EAEH;EACG;EAcH;EACA;;AAEA;EACG;EACA;;;AAMJ;AAEA;EACE;EACA;EAEA;EACA;;;AAGF;EACE;;;AAGF;AAEA;EACC;EACA;EACA;EACA;EACG","file":"clear-typography.css"}

BIN
data/cat.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

177
exemples/exemples.md Normal file
View file

@ -0,0 +1,177 @@
# Exemples
Quelques exemples des styles que prennent différents composants
## Details
La balise `<details>` permet de cacher et afficher une information au clic. Ici, elle a été stylisé comme un bloc, et le sommaire a reçu un état au survol pour que ce soit plus visible que c'est un élément interactif
<details>
<summary>Sommaire</summary>
Contenu du `details`.
</details>
## Mark
La balise `<mark>` permet d'afficher simplement des éléments en <mark>surbrillance</mark>. Cela utilise la couleur d'accent claire (et sombre en mode sombre). Le style est proche de celui de code, mais sans monospace et avec la couleur d'accent.
# Image
Une image dans un paragraphe seul sera automatiquement en bloc, centrée et responsive
![Une photo de chat, bien sûr](/cat.jpg)
# Table
Le style des tableaux
<div class="responsive-table">
<table>
<caption>
Exemple de tableau
</caption>
<thead>
<tr>
<th scope="col">Animal</th>
<th scope="col">En liberté</th>
<th scope="col">Nombre</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Canard</th>
<td>Oui</td>
<td>3</td>
</tr>
<tr>
<th scope="row">Poules</th>
<td>Non</td>
<td>4</td>
</tr>
<tr>
<th scope="row">Oies</th>
<td>Plus ou moins</td>
<td>6</td>
</tr>
<tr>
<th scope="row">Chiens</th>
<td>Oui</td>
<td>2</td>
</tr>
<tr>
<th scope="row">Chats</th>
<td>Oui</td>
<td>5</td>
</tr>
<tr>
<th scope="row">Perroquet (gris du gabon et deux verts)</th>
<td>Non</td>
<td>3</td>
</tr>
<tr>
<th scope="row">Iguane</th>
<td>Non</td>
<td>1</td>
</tr>
</tbody>
<tfoot>
<tr>
<th scope="row" colspan="2">Nombre total</th>
<td>24</td>
</tr>
</tfoot>
</table>
</div>
## Classes utilitaires
Quelques classes CSS sont utilisées afin d'avoir quelques outils supplémentaires utiles, notamment dans le cadre des flexboxes.
- `.flex` est utilisé pour afficher deux éléments cotes à cotes
- `.separator` est utilsié pour afficher un élément à la fin d'une navbar (cela poussera tout les composants après). Il est utilisé par exemple dans le bouton "Changelog" de la navbar pour pousser les suivants.
- `.p` est utlisé pour se faire comporter une balise comme un paragraphe, se combine bien avec .flex dans les articles
- `.responsive-table` est utilisé dans un dev pour entourer un tableau et le rendre plus ou moins responsive
## Artictecture des titres
Les différents types ont différent style, et voici ce que ça donne du h3 au h6 (le h1 est le titre de page, et le h2 celui juste au dessus)
### Titre H3
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vitae augue ut enim iaculis consequat.
#### Titre H4
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vitae augue ut enim iaculis consequat.
##### Titre H5
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vitae augue ut enim iaculis consequat.
###### Titre H6
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vitae augue ut enim iaculis consequat.
## Hgroup
Les hgroup sont supporté. Tout texte dedans sera en gras, et les titres n'auront pas leur margin-bottom habituel :
```html
<hgroup>
<h1>Titre</h1>
<p>Sous-titre géré dans le hgroup</p>
</hgroup>
```
donne le résultat suivant :
<hgroup>
<h1>Titre</h1>
<p>Sous-titre géré dans le hgroup</p>
</hgroup>
## Input
Les différents types d'input ont des styles
<form>
<label for="text">Champ de texte :</label>
<input type="text" id="text" name="text" />
<div class="p"><label for="checkbox">Champ de checkbox :</label>
<input type="checkbox" id="checkbox" name="checkbox" /></div>
<label for="color">Champ de couleur :</label>
<input type="color" id="color" name="color" />
<label for="date">Champ de date :</label>
<input type="date" id="date" name="date" />
<label for="time">Champ d'heure :</label>
<input type="time" id="time" name="time" />
<label for="datetime-local">Champ de date et heure :</label>
<input type="datetime-local" id="datetime-local" name="datetime-local" />
<label for="email">Champ de mail :</label>
<input type="email" id="email" name="email" />
<label for="tel">Champ de tel :</label>
<input type="tel" id="tel" name="tel" />
<label for="file">Champ de fichier :</label>
<input type="file" id="file" name="file" />
<label for="number">Champ de nombre :</label>
<input type="number" id="number" name="number" />
<div class="p"><label for="radio">Champ radio :</label>
<input type="radio" id="radio" name="radio" /></div>
<label for="select">Champ select:</label>
<select name="select" id="select">
<option value="">--Choix d'option--</option>
<option value="canard">Canard</option>
<option value="oie">Oie</option>
<option value="poule">Poule</option>
<option value="faisan">Faisant</option>
<option value="dindon">Dindon</option>
</select>
<div>
<input type="submit" id="submit" name="submit" />
<input type="reset" id="reset" name="reset" />
</div>
</form>
<div><textarea>uwu</textarea></div>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

51
generate.js Normal file
View file

@ -0,0 +1,51 @@
var marked = require('marked')
var fs = require('fs')
const inFile = "README.md"
const outFile = "dist/index.html"
function parse(inFile, outFile) {
const inputContent = fs.readFileSync(inFile, 'utf8')
const content = `<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>moineau.css</title>
<link href="css/moineau.min.css" rel="stylesheet">
<link
rel="icon"
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🐦</text></svg>"
/>
</head>
<body>
<header>
<nav>
<ul>
<li><a href="/">🏠 Accueil</a></li>
<li><a href="/exemples.html">🗒 Exemples</a></li>
<li class="separator"><a href="/changelog.html">📋 Changelog</a></li>
<li><a href="https://git.kobold.cafe/kazhnuz/moineau">Sources</a></li>
</ul>
</nav>
</header>
<main>
<article>
${marked.parse(inputContent)}
</article>
</main>
<hr>
<footer class="flex">
<div><small>moineau</small></div>
<div><small>CC BY <a href="https://kazhnuz.space/">Kazhnuz</a></small></div>
</footer>
</body>
</html>`
fs.writeFileSync(outFile, content)
}
parse("README.md", "dist/index.html")
parse("exemples/exemples.md", "dist/exemples.html")
parse("CHANGELOG.md", "dist/changelog.html")

View file

@ -1,140 +0,0 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Ma Page de tête</title>
<!-- meta -->
<meta name="description" content="">
<meta name="author" content="">
<!-- mon icon -->
<link rel="shortcut icon" href="favicon.ico">
<!-- framework utilisés -->
<link href="css/clear-typography.css" rel="stylesheet">
</head>
<body class="text-wrapper debug">
<h1>
Document de Test
</h1>
<time class="time"> Le vendredi 19 septembre 2014 à 07:16 </time>
<h2>
Introduction : Lorem Ipsum
</h2>
<p>
<em>
Lorem ipsum dolor sit amet
<sup>
<a href="#1">
[1]
</a>
</sup>
, consectetur adipiscing elit. Praesent varius ullamcorper diam, non sagittis lectus rutrum id. Integer eros urna, egestas et libero a, finibus egestas odio. Nunc vel hendrerit quam, eget malesuada sem. Sed hendrerit ligula pharetra leo aliquam volutpat. Integer auctor urna ac convallis laoreet. Nunc vestibulum ipsum sed tortor aliquam porta. Cras nunc est, lobortis in est at, rhoncus auctor nunc. Sed dignissim erat non sollicitudin ultricies. Integer vel consectetur urna. Etiam fermentum ligula vitae nunc viverra, a fringilla sem aliquam. Suspendisse potenti. Morbi sem mi, malesuada quis odio vitae, suscipit congue metus. Sed ut ullamcorper urna, eget molestie est. Sed pulvinar justo ac urna consectetur fringilla. Donec tristique eget leo sit amet mollis.
</em>
</p>
<ul>
<li>
1 - Filmographie de Joachim du Poulet
<ul>
<li>
1.1 - Pour une poignée de Poulet
</li>
<li>
1.2 - Pour quelques Poulet de plus
<ul>
<li>
Le personnage du Coq au Vin
<ul>
<li>
En plus il est délicieux
</li>
</ul>
</li>
</ul>
</li>
<li>
1.3 - Le bon, la brute et le Poulet
</li>
</ul>
</li>
<li>
2 - Les Cocotes : Etude de leur Violence
</li>
</ul>
<h3>
Filmographie de Joachim du Poulet
</h3>
<p>
Nous allons commencer par une célèbre citation de ce non moins célèbre réalisateur, en latin parce que c'est plus classe :
</p>
<blockquote>
<p>
Cras malesuada, metus at viverra molestie, mi ligula sodales tellus, vitae facilisis ante est vitae dolor. Donec feugiat non est eget elementum. Nullam in erat et arcu tincidunt maximus. Nullam nibh orci, egestas eu ex non, viverra pretium magna. Proin convallis, risus eu condimentum luctus, ante dui mattis eros, a varius risus diam sed nisl. Ut malesuada ipsum in augue accumsan ullamcorper. Phasellus efficitur augue in venenatis sollicitudin. Integer at consectetur arcu.
</p>
</blockquote>
<h4>
Pour une poignée de poulets
</h4>
<p>
Proin bibendum felis sit amet nisl iaculis,
<strong>
vel blandit purus dictum
</strong>
. Maecenas ullamcorper tortor ac dolor pulvinar, id imperdiet arcu suscipit.
<mark>
Sed posuere lectus eu orci tristique maximus
</mark>
. Nulla facilisi. Aenean sed fermentum nisl. Donec sodales ligula eu est finibus, eu posuere ligula condimentum. Morbi arcu magna, varius id justo ac, aliquam luctus magna. Pellentesque a velit et ipsum euismod congue eget eu sem. Nulla luctus est nec arcu volutpat blandit.
</p>
<p>
Quisque egestas, elit eu tempus tincidunt, mi libero porta purus, eget lobortis metus erat a dolor. Integer ac turpis lacinia, interdum nisl non, feugiat libero. Sed auctor quam turpis, quis volutpat lectus consectetur at.
<del>
Vestibulum tristique tellus eu nibh feugiat malesuada eu vitae diam.
</del>
Aenean mi leo, suscipit nec euismod vel, suscipit eu elit. Duis pharetra lectus risus, eget gravida felis mattis ac. Sed vitae arcu purus.
</p>
<h4>
Pour quelques poulets de plus
</h4>
<h5>
Le personnage du Coq au Vin
</h5>
<p>
Integer enim diam, venenatis sit amet ex ut, tincidunt ullamcorper erat. Cras sodales nibh quis nunc sodales, a pulvinar lacus eleifend. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut feugiat quam scelerisque, tempus ex et, volutpat ante. Pellentesque facilisis sapien non odio tempus, eget ultricies augue porttitor. Donec elementum tincidunt eros et accumsan. Nam nec lacinia est. Quisque erat mauris, sagittis nec nulla ac, convallis tempus nulla. Phasellus ligula nisl, vulputate id dapibus in, efficitur ut sapien. Suspendisse dapibus diam sit amet egestas pellentesque. Nulla vel eleifend dui. Morbi nec interdum sem. Nullam fringilla tincidunt viverra. Integer sodales elementum quam, id malesuada magna vulputate ut.
</p>
<h6>
En plus il est délicieux
</h6>
<p>
Proin rhoncus metus rhoncus, aliquam tellus et, interdum odio. Morbi porttitor commodo ullamcorper. Sed iaculis orci id nunc porta tristique. Morbi auctor neque vitae suscipit pellentesque. Maecenas id lacinia leo, nec dictum leo. Aliquam cursus semper quam, vel bibendum tellus commodo sit amet. Vestibulum et iaculis justo, nec tempor nibh. Integer eu felis neque.
</p>
<h4>
Le Bon, la Brute et le Poulet
</h4>
<p>
Nullam iaculis viverra tristique. Proin nibh eros, eleifend euismod quam sit amet, auctor scelerisque libero. Suspendisse consequat porttitor leo id feugiat. Suspendisse pretium, erat nec vulputate scelerisque, lectus libero ultrices arcu, sed sagittis magna lectus vitae purus. Aliquam pharetra tincidunt nibh nec rutrum. Maecenas fringilla ultrices suscipit. Praesent mattis risus non orci vestibulum, vulputate dapibus velit mollis. Quisque sagittis odio velit, vel dapibus turpis commodo nec. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer sit amet posuere ligula. Vestibulum commodo nulla eget nibh luctus, a interdum leo lacinia. Nullam mattis aliquet mauris sed tincidunt. Mauris et velit elementum, facilisis turpis in, viverra orci. Aenean ac lorem ullamcorper, bibendum ipsum sit amet, volutpat magna. Nam pellentesque venenatis ligula sed sagittis. Maecenas porttitor blandit magna sed posuere.
</p>
<h3>
Les Cocotes : Etude de leur Violence
</h3>
<p>
Mauris a cursus sem, in tempus odio. Curabitur ut ullamcorper enim. In faucibus odio ac arcu pharetra, ac condimentum ex ultricies. Aenean vestibulum eu lacus ac luctus. In in metus libero. Aliquam erat volutpat. Suspendisse quis ultrices odio. Nulla maximus faucibus lobortis.
</p>
<pre><code>Vivamus tincidunt dolor quis consectetur dapibus.
Ut metus risus, lobortis non venenatis in, ultricies a orci.
In suscipit ante et aliquet pretium.
Integer diam dui, rutrum vitae risus ultricies, varius vulputate magna.
In id suscipit elit.
</code></pre>
<hr/>
<p>
[1] : Sed et odio volutpat, convallis est et, interdum sapien.
</p>
</body>
</html>

31
package.json Normal file
View file

@ -0,0 +1,31 @@
{
"name": "moineau.css",
"version": "2.99.0",
"description": "A minimal and simple css stylesheet, inspired by motherfuckingwebsite",
"main": "scss/moineau.scss",
"scripts": {
"scss": "sass --watch scss/moineau.scss dist/css/moineau.css",
"scss-no-source-map": "sass --watch --no-source-map scss/moineau.scss dist/css/moineau.css",
"minify": "sass --watch scss/moineau.scss --style compressed dist/css/moineau.min.css",
"minify-no-source-map": "sass --watch --no-source-map scss/moineau.scss --style compressed dist/css/moineau.min.css",
"build": "sass scss/moineau.scss dist/css/moineau.css && sass scss/moineau.scss --style compressed dist/css/moineau.min.css",
"serve": "http-server ./dist & npm run site & npm run minify",
"site": "cp data/cat.jpg dist/cat.jpg & node generate.js",
"compile": "sass scss/moineau.scss --style compressed dist/css/moineau.min.css && npm run site"
},
"repository": {
"type": "git",
"url": "https://git.kobold.cafe/kazhnuz/clear-typograhy.css"
},
"keywords": [
"css",
"scss"
],
"author": "Kazhnuz",
"license": "GPL-3.0-or-later",
"dependencies": {
"http-server": "^14.1.1",
"marked": "^14.1.2",
"sass": "^1.78.0"
}
}

View file

@ -1,121 +0,0 @@
/* ------------------ FONT LOADING ------------------- */
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-Light-webfont.eot');
src: url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Light-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-Light-webfont.woff') format('woff'),
url('../fonts/OpenSans-Light-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Light-webfont.svg#open_sansbold') format('svg');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-LightItalic-webfont.eot');
src: url('../fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-LightItalic-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
url('../fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-LightItalic-webfont.svg#open_sansbold') format('svg');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-Regular-webfont.eot');
src: url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Regular-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-Regular-webfont.woff') format('woff'),
url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Regular-webfont.svg#open_sansbold') format('svg');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-Italic-webfont.eot');
src: url('../fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Italic-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-Italic-webfont.woff') format('woff'),
url('../fonts/OpenSans-Italic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Italic-webfont.svg#open_sansbold') format('svg');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-Semibold-webfont.eot');
src: url('../fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Semibold-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-Semibold-webfont.woff') format('woff'),
url('../fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Semibold-webfont.svg#open_sansbold') format('svg');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot');
src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-SemiboldItalic-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
url('../fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-SemiboldItalic-webfont.svg#open_sansbold') format('svg');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-Bold-webfont.eot');
src: url('../fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Bold-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-Bold-webfont.woff') format('woff'),
url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Bold-webfont.svg#open_sansbold') format('svg');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-BoldItalic-webfont.eot');
src: url('../fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-BoldItalic-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
url('../fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-BoldItalic-webfont.svg#open_sansbold') format('svg');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-ExtraBold-webfont.eot');
src: url('../fonts/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-ExtraBold-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-ExtraBold-webfont.woff') format('woff'),
url('../fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-ExtraBold-webfont.svg#open_sansbold') format('svg');
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'OpenSans';
src: url('../fonts/OpenSans-ExtraBoldItalic-webfont.eot');
src: url('../fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-ExtraBoldItalic-webfont.woff2') format('woff2'),
url('../fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('../fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-ExtraBoldItalic-webfont.svg#open_sansbold') format('svg');
font-weight: 800;
font-style: italic;
}

View file

@ -1,215 +0,0 @@
@import 'font-face';
// Change these two variables for styling
$baseheight: 18px;
$baseline: 1.75;
// Don't change this one, it's just to
// make code more readable
$lineheight: $baseline * 1rem;
@mixin paragraph() {
padding:0;
margin:0;
margin-bottom: $lineheight;
}
html {
font-family: OpenSans, sans-serif;
text-align: left;
font-size: $baseheight;
}
body {
line-height: $lineheight;
color: #444;
font-weight: 400;
}
.debug {
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.25) 0, rgba(255, 255, 255, 0) 1px);
background-repeat: repeat-y;
background-size: 100% $lineheight;
}
.night-mode {
color:#BBB;
}
strong {
font-weight: 600;
}
em {
font-style: italic;
}
a {
color:#2484c1;
text-decoration:none;
}
p, time {
@include paragraph();
&:last-child {
margin-bottom:0;
}
}
ul, ol {
@include paragraph();
ul {
margin-bottom:0;
}
li {
margin-left: $lineheight;
}
}
/* sup, sub */
sup, sub {
margin:0;
padding:0;
line-height:$lineheight;
font-size: 0.8rem;
vertical-align:baseline;
position:relative;
}
sup {
top: -$lineheight/4;
}
sub {
top: $lineheight/4;
}
::selection { background: #2484c1; color: #fff; }
::-moz-selection { background: #2484c1; color: #fff; }
/* ------------------ WRAPPERS ------------------- */
.text-wrapper {
width:$baseheight*40;
margin: auto;
}
/* ------------------ TITLES ------------------- */
@mixin title($size, $weight) {
$height: ceil($size / $baseline) * $baseline;
font-size: $size * 1rem;
line-height: $height * 1rem;
margin-bottom: $lineheight;
font-weight: $weight;
}
h1, h2, h3, h4, h5, h6, h7 {
text-align: left;
font-size: $baseheight;
line-height: $lineheight;
padding:0;
margin:0;
font-weight:400;
}
h1 {
@include title(2.3333333, 700);
}
h2 {
@include title(2, 700);
}
h3 {
@include title(1.5, 700);
}
h4 {
@include title(1.5, 600);
}
h5 {
@include title(1.333333, 600);
}
h6 {
@include title(1.1, 600);
}
/* ------------------ HR ------------------- */
hr {
border-top: 0px;
border-left: 0px;
border-right: 0px;
border-bottom: 1px;
border-color: rgba(1,1,1,0.15);
border-style: solid;
padding:0;
margin:0;
margin-bottom: $lineheight;
}
/* ------------------ QUOTE ------------------- */
@mixin well() {
border-width: 0 0 0 $lineheight/4;
border-style: solid;
border-radius: $lineheight/8;
margin:0;
margin-bottom: $lineheight;
padding: $lineheight;
font-size:1.1rem;
max-width: 100%;
overflow: auto;
}
blockquote {
@include well();
border-color: rgba(1, 1, 1, 0.15);
.night-mode & {
border-color: rgba(255, 255, 255, 0.15)
}
}
pre {
@include well();
border-color: rgba(1,1,1,0.20);
background-color:#EEE;
.night-mode & {
background-color:#222;
border-color:rgba(255,255,255,0.20);
}
}
/* ------------------ SPECIAL STYLING ------------------- */
mark {
border-radius: 0.2em;
padding:0 $lineheight/4 0 $lineheight/4;
background-color:rgba(255,255,0,0.33);
color: inherit;
}
.night-mode mark {
background-color:rgba(128,128,0,0.66);
}
/* ------------------ SPECIAL STYLING ------------------- */
.time {
font-style: italic;
text-align: right;
width: 100%;
display: block;
font-size: 0.9rem;
}

371
scss/moineau.scss Normal file
View file

@ -0,0 +1,371 @@
:root {
--font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Cantarell, Roboto, Oxygen, Ubuntu, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
--accent-color-dark: #1971c2;
--accent-color-dark-hover: #1864ab;
--accent-color-light: #d0ebff;
--accent-color-light-hover: #e7f5ff;
--text-color: #212529;
--border-color: rgba(0,0,0,0.15);
--hover-color: rgba(0,0,0,0.05);
--background-color: #f8f9fa;
--well-color: #e9ecef;
--accent-color: var(--accent-color-dark);
--accent-color-back: var(--accent-color-light);
--accent-color-hover: var(--accent-color-dark-hover);
--border-radius: 6px;
}
@media (prefers-color-scheme: dark) {
:root {
--text-color: #e9ecef;
--background-color: #212529;
--well-color: #343a40;
--accent-color: var(--accent-color-light);
--accent-color-back: var(--accent-color-dark);
--accent-color-hover: var(--accent-color-light-hover);
--border-color: rgba(255,255,255,0.2);
--hover-color: rgba(255,255,255,0.1);
}
}
html {
font-family: var(--font-family);
text-align: left;
font-size: 17px;
background-color: var(--background-color);
accent-color: var(--accent-color);
line-height: 1.6rem;
}
body {
color: var(--text-color);
font-weight: 400;
max-width: 800px;
padding:1rem;
margin: auto;
}
nav ul {
display: flex;
flex-wrap: wrap;
padding: .5rem 0;
border-top: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
li {
list-style-type: none;
margin:0;
a, span {
padding: .5rem;
}
&.separator {
margin-right: auto;
}
}
}
// Typography
p,
h1,
h2,
h3,
h4,
h5,
h6,
ul,
ol,
hr,
table,
details
main,
.p,
input,
textarea,
select,
hgroup,
article {
padding: 0;
margin: 0 0 1rem 0;
}
p {
&:last-child {
margin-bottom:0;
}
}
a {
color: var(--accent-color);
text-decoration:none;
border-radius: 3px;
padding: 1px;
&:hover {
background-color: var(--hover-color);
}
}
:is(ul, ol) > :is(ul, ol) {
margin-bottom:0;
}
li {
margin-left: 1rem;
}
::selection, ::-moz-selection {
background: var(--accent-color-back);
color: var(--text-color);
}
hr {
border:0;
border-bottom: 1px solid var(--border-color);
}
code,
mark {
background-color:var(--well-color);
padding: 5px;
border-radius: 3px;
}
mark {
background-color: var(--accent-color-back);
color:currentColor;
}
pre, code {
font-family: var(--font-family-monospace);
}
p > img:only-child {
display: block;
max-width: 100%;
margin:auto;
}
/* ------------------ TITLES ------------------- */
hgroup > :is(h1, h2, h3, h4, h5, h6) {
margin-bottom: 0;
}
hgroup {
font-weight: 700;
}
h1, h2, h3, h4, h5, h6 {
text-align: left;
line-height: 1;
font-weight:700;
}
h1 {
font-size: 3rem;
}
h2 {
font-size: 2.33rem;
}
h3 {
font-size: 1.75rem;
}
h4 {
font-size: 1.5rem;
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
font-weight: 800;
}
/* ------------------ HR ------------------- */
/* ------------------ blocks ------------------- */
blockquote,
pre,
details {
border: 0;
border-radius: 6px;
margin: 0 0 1rem 0;
padding: .75rem;
max-width: 100%;
background-color: var(--well-color);
border: 0;
border-left: 6px solid var(--accent-color);
}
pre code {
padding: 0;
}
pre {
overflow: scroll;
}
summary {
font-weight: 700;
font-size: 0.9em;
&:hover {
background-color: var(--hover-color);
}
}
/* ------------------ INPUT ------------------- */
a, button, input {
outline-color: var(--accent-color);
outline-style: none;
outline-width: 2px;
&:focus-visible {
outline-style: dashed;
}
}
input, textarea, select {
display:block;
background-color: var(--background-color);
border-radius: var(--border-radius);
border: 1px solid var(--border-color);
outline-offset: 2px;
padding: .5rem;
color: var(--text-color);
&:hover {
background-color: var(--hover-color);
}
max-width: 100%;
overflow: scroll;
}
label {
font-size: .9rem;
font-weight: bolder;
}
textarea {
width: 100%;
box-sizing: border-box;
margin-bottom: 1rem;
}
input[type=checkbox], input[type=radio] {
display: inline-block;
appearance: none;
aspect-ratio: 1;
font-size: 1rem;
height:1em;
width:1em;
box-sizing: border-box;
line-height: 1;
padding:0;
margin: 0 .25em;
border-radius: 3px;
border: 1px solid var(--border-color);
content: "";
position: relative;
top: .2rem;
&:checked {
background-color: var(--accent-color);
box-shadow:inset 0px 0px 0px 3px var(--background-color);
&:hover {
background-color: var(--accent-color-hover);
box-shadow:inset 0px 0px 0px 3px color-mix(in srgb, var(--background-color) 90%, currentColor);
}
}
}
input[type=radio] {
border-radius: 9999px;
}
button, .button, input[type=submit], input[type=reset], input[type=button] {
background-color: var(--accent-color);
color: var(--background-color);
border: none;
padding: .5rem 1rem;
border-radius: var(--border-radius);
outline-offset: 2px;
display: inline-block;
&:hover {
background-color: var(--accent-color-hover);
}
}
/* Tables */
.responsive-table {
width:100%;
overflow: scroll;
}
table {
border-collapse: separate;
width:100%;
border:0;
border-spacing: 3px;
}
caption {
font-weight: bolder;
}
table.centered th, table.centered td {
text-align: center;
}
tr, th, td {
border:0;
}
th, td {
background-color: var(--well-color);
padding:.33rem .66rem;
}
table:not(:has(thead)) tr:first-child, table > tr:first-child, table thead tr:first-child {
td:first-child, th:first-child {
border-top-left-radius: var(--border-radius);
}
td:last-child, th:last-child {
border-top-right-radius: var(--border-radius);
}
}
table > tr:last-child, table tbody tr:last-child {
td:first-child, th:first-child {
border-bottom-left-radius: var(--border-radius);
}
td:last-child, th:last-child {
border-bottom-right-radius: var(--border-radius);
}
}
/* ------------------ SPECIAL STYLING ------------------- */
.flex {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}