complete modulation of html
This commit is contained in:
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
@@ -1,10 +1,13 @@
|
|||||||
{
|
{
|
||||||
// Use Prettier as the default formatter for HTML and CSS
|
// Use Prettier as the default formatter for HTML, CSS, and PHP
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"[html]": {
|
"[html]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
},
|
},
|
||||||
"[css]": {
|
"[css]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[php]": {
|
||||||
|
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
README.md
36
README.md
@@ -1,21 +1,29 @@
|
|||||||
|
### instructions
|
||||||
|
|
||||||
|
- start server with php, and browser-sync for auto reload :
|
||||||
|
- `npm run dev`
|
||||||
|
- setup instructions :
|
||||||
|
- install apps : `sudo apt update && sudo apt install php-cli nodejs npm`
|
||||||
|
- verify : `php -v` & `node -v` & `npm -v`
|
||||||
|
- install dependencies : `npm ci`
|
||||||
|
- -> only for info, at project creation setup :
|
||||||
|
- run : `npm init -y && npm install --save-dev browser-sync`
|
||||||
|
- add in package.jsons > scripts : `php -S localhost:8000 & browser-sync start --proxy localhost:8000 --files "**/*.php,**/*.css,**/*.js" --port 3000`
|
||||||
|
- `php -S localhost:8000` → starts PHP built-in server
|
||||||
|
- `&` → runs PHP server in the background (Linux/macOS)
|
||||||
|
- `browser-sync start --proxy localhost:8000` → proxies PHP server
|
||||||
|
- `--files "**/*.php,**/*.css,**/*.js"` → watches files for changes
|
||||||
|
- `--port 3000` → BrowserSync UI accessible at http://localhost:3000
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### ressources
|
||||||
|
|
||||||
html validator : https://validator.w3.org/nu
|
html validator : https://validator.w3.org/nu
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
- start server with php, and nodemon for auto reload :
|
### difficulties
|
||||||
- `npm run dev`
|
|
||||||
|
|
||||||
- setup :
|
|
||||||
- install apps : `sudo apt update && sudo apt install php-cli nodejs npm`
|
|
||||||
- verify : `php -v` & `node -v` & `npm -v`
|
|
||||||
- -> only for info, at project creation setup :
|
|
||||||
- run : `npm init -y && npm install --save-dev nodemon`
|
|
||||||
- add in package.jsons > scripts : `"dev": "nodemon --exec 'php -S localhost:8000' --ext php,html"`
|
|
||||||
- install dependencies : `npm ci`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
difficulties :
|
|
||||||
|
|
||||||
- [accessibility with ascii art titles](https://stackoverflow.com/questions/77537096/make-text-in-ascii-art-more-accessible)
|
- [accessibility with ascii art titles](https://stackoverflow.com/questions/77537096/make-text-in-ascii-art-more-accessible)
|
||||||
- I finally decided to go with a structure like this :
|
- I finally decided to go with a structure like this :
|
||||||
|
|||||||
50
index.php
50
index.php
@@ -1,33 +1,25 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="fr" dir="ltr">
|
<html lang="fr" dir="ltr">
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta
|
|
||||||
name="viewport"
|
|
||||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
|
||||||
/>
|
|
||||||
<!-- create "fake" favicon : https://stackoverflow.com/questions/1321878/how-to-prevent-favicon-ico-requests -->
|
|
||||||
<link rel="icon" href="data:;base64,iVBORw0KGgo=" />
|
|
||||||
<title>hugulumu.fr</title>
|
|
||||||
<meta name="description" content="site web de hugo lamy, developpeur" />
|
|
||||||
<base href="./src/" />
|
|
||||||
<link href="./styles/global_style.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/mouses.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/banners.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/language.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/elements/title.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/elements/hero.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link
|
|
||||||
href="./styles/elements/projects.css"
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
/>
|
|
||||||
<link href="./styles/elements/cv.css" type="text/css" rel="stylesheet" />
|
|
||||||
<link href="./styles/elements/infos.css" type="text/css" rel="stylesheet" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
<head>
|
||||||
<?php include './src/body.php'; ?>
|
<meta charset="UTF-8" />
|
||||||
</body>
|
<meta
|
||||||
|
name="viewport"
|
||||||
|
content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||||||
|
<!-- create "fake" favicon : https://stackoverflow.com/questions/1321878/how-to-prevent-favicon-ico-requests -->
|
||||||
|
<link rel="icon" href="data:;base64,iVBORw0KGgo=" />
|
||||||
|
<title>hugulumu.fr</title>
|
||||||
|
<meta name="description" content="site web de hugo lamy, developpeur" />
|
||||||
|
<base href="./src/" />
|
||||||
|
<link href="./styles/reset.css" type="text/css" rel="stylesheet" />
|
||||||
|
<link href="./styles/base.css" type="text/css" rel="stylesheet" />
|
||||||
|
<link href="./styles/text.css" type="text/css" rel="stylesheet" />
|
||||||
|
<link href="./styles/mouses.css" type="text/css" rel="stylesheet" />
|
||||||
|
<link href="./styles/banners.css" type="text/css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
|
||||||
</html>
|
<body>
|
||||||
|
<?php include './src/body.php'; ?>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
1587
package-lock.json
generated
1587
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -8,12 +8,12 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"dev": "nodemon --exec 'php -S localhost:8000' --ext php,html"
|
"dev": "php -S localhost:8000 & browser-sync start --proxy localhost:8000 --files \"**/*.php,**/*.css,**/*.js\" --port 3000"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"nodemon": "^3.1.14"
|
"browser-sync": "^3.0.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
757
src/body.php
757
src/body.php
@@ -1,725 +1,56 @@
|
|||||||
|
<style>
|
||||||
|
section {
|
||||||
|
display: grid;
|
||||||
|
margin: 0px;
|
||||||
|
width: 100vw;
|
||||||
|
grid-template-columns: auto auto auto;
|
||||||
|
grid-auto-rows: auto;
|
||||||
|
grid-gap: 10px;
|
||||||
|
gap: 10px;
|
||||||
|
min-height: 100vh;
|
||||||
|
justify-items: center;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
<input type="checkbox" id="language" />
|
>* {
|
||||||
<label id="language_label" for="language">
|
grid-column: 2 / span 1;
|
||||||
<span id="fr"
|
}
|
||||||
><img class="flag" src="./docs/flags/fr_bnw.svg" alt="french flag"
|
|
||||||
/></span>
|
|
||||||
<span id="en"
|
|
||||||
><img class="flag" src="./docs/flags/gb_bnw.svg" alt="english flag"
|
|
||||||
/></span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<!--
|
>.grid_full_width {
|
||||||
I moved this outside the hero section,
|
grid-column: 1 / span 3;
|
||||||
so that i can change my mind to put it or not without having to change the grid rows height
|
}
|
||||||
-->
|
|
||||||
<div
|
|
||||||
id="top_banner"
|
|
||||||
class="banner banner_size_0 banner_speed_50 banner_reverse grid_full_width"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
|
|
||||||
<!--
|
header {
|
||||||
HERO SECTION
|
display: flex;
|
||||||
-->
|
flex-direction: column;
|
||||||
<section class="section hero" id="hero">
|
place-content: center;
|
||||||
<header>
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1 aria-label="hugo lamy" id="name" class="title">
|
|
||||||
<span aria-hidden="true" class="pre pre_small">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
<span aria-hidden="true" class="pre pre_small">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<!-- prettier-ignore -->
|
h1 {
|
||||||
<h1 aria-label="programmeur informatique" id="title" class="title">
|
display: flex;
|
||||||
<span aria-hidden="true" class="pre">
|
flex-direction: row;
|
||||||
<span class="fr">
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<p class="subtitle">
|
article {
|
||||||
<span class="fr">
|
text-align: left;
|
||||||
Bonjour, je suis un développeur inventif, méthodique, et passionné par
|
}
|
||||||
l'informatique, et plus particulièrement le libre et l'open source.
|
|
||||||
J'aime explorer de nouvelles solutions techniques et comprendre les
|
|
||||||
systèmes en profondeur :-]
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
Hello, I am a creative, methodical developer with a passion for computer
|
|
||||||
science, particularly free and open-source software. I enjoy exploring
|
|
||||||
new technical solutions and gaining a deep understanding of systems :-]
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="mouse"><div class="frames mouse_1 pre"></div></div>
|
.banner {
|
||||||
<div
|
overflow-x: hidden;
|
||||||
class="banner banner_size_3 banner_speed_30 grid_full_width"
|
}
|
||||||
aria-label="banner delimitation in ASCII art"
|
}
|
||||||
></div>
|
</style>
|
||||||
</section>
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<?php include 'modules/language.html'; ?>
|
||||||
|
|
||||||
<!--
|
<?php include 'modules/hero.html'; ?>
|
||||||
CV
|
|
||||||
-->
|
|
||||||
<section id="cv" class="section">
|
|
||||||
<header>
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1 aria-label="curriculum vitae">
|
|
||||||
<span aria-hidden="true" class="pre">
|
|
||||||
<span class="fr en">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="cv">
|
<?php include 'modules/cv.html'; ?>
|
||||||
<div class="cv_download">
|
|
||||||
<p>
|
|
||||||
<span class="fr">télécharger </span>
|
|
||||||
<span class="en">download </span>
|
|
||||||
:
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_FR.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version graphical FR"
|
|
||||||
>
|
|
||||||
<span class="fr">[Graphique FR]</span>
|
|
||||||
<span class="en">[Graphical FR]</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_EN.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version graphical EN"
|
|
||||||
>
|
|
||||||
<span class="fr">[Graphique EN]</span>
|
|
||||||
<span class="en">[Graphical EN]</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_Ats_FR.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version ats FR"
|
|
||||||
>
|
|
||||||
<span class="fr">[ATS FR]</span>
|
|
||||||
<span class="en">[ATS FR]</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_Ats_EN.pdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to pdf CV version ats EN"
|
|
||||||
>
|
|
||||||
<span class="fr">[ATS EN]</span>
|
|
||||||
<span class="en">[ATS EN]</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2>
|
<?php include 'modules/projects.html'; ?>
|
||||||
<span class="fr">EXPÉRIENCES</span>
|
|
||||||
<span class="en">WORK EXPERIENCES</span>
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="banner banner_size_0 banner_pause"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
|
|
||||||
<h4>
|
<?php include 'modules/infos.html'; ?>
|
||||||
<span class="fr">web full-stack</span>
|
|
||||||
<span class="en">web full-stack</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>BLOC-HOUSE: reprise du site d'une association d'artistes
|
|
||||||
(fullstack, php, javascript, html, css), 2023</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>BLOC-HOUSE: takeover of an artists' association website
|
|
||||||
(fullstack, php, javascript, html, css), 2023</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>TRANSCENDENCE: chat en ligne avec gestions des comptes et
|
|
||||||
notifications (fullstack, node.js, nest.js, websocket, svelte,
|
|
||||||
PostgreSQL)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>TRANSCENDENCE: online chat with account management and
|
|
||||||
notifications (fullstack, node.js, nest.js, websocket, svelte,
|
|
||||||
PostgreSQL)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>FIPF: plugin qui gère les paiements, les roles, corrige les
|
|
||||||
autres plugins et des actions front-end (fullstack, js, php, bdd),
|
|
||||||
2024</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>FIPF: plugin that manages payments, roles, corrects other plugins
|
|
||||||
and front-end actions (fullstack, js, php, bdd), 2024</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>JIPF: utilise les API GoogleMaps pour afficher des données
|
|
||||||
dynamiques sur une carte avec des filtres, 2022</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>JIPF: uses GoogleMaps APIs to display dynamic data on a map, with
|
|
||||||
interactive filters</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>KOSMOPOLIT: front-end, integration d'un site statique pour une
|
|
||||||
association de litterature, (html, css atomique), 2022</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>KOSMOPOLIT: front-end, integration of a static site for a
|
|
||||||
literature association, (html, atomic css), 2022</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h4>
|
</div>
|
||||||
<span class="fr">devops</span>
|
|
||||||
<span class="en">devops</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>WEBSERV: création d'un serveur web non-bloquant en multiplexage,
|
|
||||||
capable de gérer des requetes http et envoyer du contenu (c++,
|
|
||||||
linux sockets)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>WEBSERV: creation of a non-blocking multiplexing web server
|
|
||||||
capable of managing http requests and sending content (c++, linux
|
|
||||||
sockets)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>MINITALK: utiliser les signaux système de linux pour creer une
|
|
||||||
communication en code ascii entre deux processus</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>MINITALK: using linux system signals to create ascii code
|
|
||||||
communication between two processes</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>INCEPTION: création de zéro d'ima-ges docker pour deployer
|
|
||||||
wordpress avec encription SSL (docker compose, mariaDB, NGINX,
|
|
||||||
Wordpress)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>INCEPTION: creating docker images from scratch to deploy
|
|
||||||
wordpress with SSL encription (docker compose, mariaDB, NGINX,
|
|
||||||
Wordpress)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h4>
|
|
||||||
<span class="fr">game</span>
|
|
||||||
<span class="en">game</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>CUBE 3D: jeu à la premiere personne utilisant le raycasting pour
|
|
||||||
la 3d et les textures, et le clavier pour bouger (c,
|
|
||||||
trigonométrie, inputs)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>CUBE 3D: first-person game using raycasting for 3d and textures,
|
|
||||||
and the keyboard for movement (c, trigonometry, inputs)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>FDF: modélisation spatiale de formes en courbes de niveau à
|
|
||||||
partir de cartes (c, trigonometrie, inputs)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>FDF: spatial modelling of contour lines from maps with keyboard
|
|
||||||
control (c, trigonometrie, inputs)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h4>
|
|
||||||
<span class="fr">system</span>
|
|
||||||
<span class="en">system</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>MINISHELL: créer un shell capable de parser des prompts, exécuter
|
|
||||||
des programmes, et réagir aux signaux (c, bash, signals, fork,
|
|
||||||
pipe, readline)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>MINISHELL: creating a shell capable of parsing prompts, executing
|
|
||||||
programs, and listening to signals (c, bash, signals, fork, pipe,
|
|
||||||
readline)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>CONTAINERS: recoder 3 conteneurs c++ avec les iterateurs,
|
|
||||||
surcharges, et templates : map, vector, stack</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>CONTAINERS: recoding c++ containers with iterators, overloads and
|
|
||||||
templates : map, vector, stack</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>PUSHSWAP: algorithmes de tris avec deux piles et des mouvements
|
|
||||||
limités aux extrémités des piles (c)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>PUSHSWAP: sorting algorithms with two stacks and limited movement
|
|
||||||
at the ends of the stacks (c)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>
|
|
||||||
<span class="fr">COMPÉTENCES</span>
|
|
||||||
<span class="en">SKILLS</span>
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="banner banner_size_0 banner_pause"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
|
|
||||||
<h4>
|
|
||||||
<span class="fr">hard skills</span>
|
|
||||||
<span class="en">hard skills</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Langages : C, C++, bash, JavaScript, PHP, CSS, HTML</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Languages : C, C++, bash, JavaScript, PHP, CSS, HTML</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx,
|
|
||||||
MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx,
|
|
||||||
MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Plus : emails, sending emails, receiving emails, deleting emails
|
|
||||||
(the it crowd S01E01)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Plus : emails, sending emails, receiving emails, deleting emails
|
|
||||||
(the it crowd S01E01)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h4>
|
|
||||||
<span class="fr">soft skills</span>
|
|
||||||
<span class="en">soft skills</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr">capacité d'apprentissage et autonomie</span>
|
|
||||||
<span class="en">learning ability, and autonomy</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">attention aux détails, patience</span>
|
|
||||||
<span class="en">attention to details, patience</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">adaptabilité et resolution de problemes</span>
|
|
||||||
<span class="en">adaptability and problem-solving</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">recevoir des feedbacks</span>
|
|
||||||
<span class="en">receiving feedback</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>
|
|
||||||
<span class="fr">FORMATIONS</span>
|
|
||||||
<span class="en">EDUCATIONS</span>
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="banner banner_size_0 banner_pause"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
|
|
||||||
<h4>
|
|
||||||
<span class="fr">informatique</span>
|
|
||||||
<span class="en">computer science</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>École 42, Paris, 2021-2022, tronc commun - niveau 10 (C, C++,
|
|
||||||
système, algorithmie, réseaux)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>42 school, Paris, 2021-2022, common core - level 10 (C, C++,
|
|
||||||
system, algorithms, networks)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>SIMPLON, développeur full-stack JavaScript, 2018 (Javascript,
|
|
||||||
Node.js, React.js, HTML, CSS)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>SIMPLON, developer full-stack JavaScript, 2018 (Javascript,
|
|
||||||
Node.js, React.js, HTML, CSS)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h4>
|
|
||||||
<span class="fr">architecture</span>
|
|
||||||
<span class="en">architecture</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Master 1, ENSAPM, ESA, ENSAV, île-de-france, France,
|
|
||||||
2008-2014</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Master 1, ENSAPM, ESA, ENSAV, île-de-france, France,
|
|
||||||
2008-2014</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>3 stages : PERSPECTIVA (Houston, Texas, 2009, 3 mois), AS (Paris,
|
|
||||||
2012, 6 mois), JC QUINTON (Paris 2014, 6 mois)</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>3 internships : PERSPECTIVA (Houston, Texas, 2009, 3 months), AS
|
|
||||||
(Paris, 2012, 6 months), JC QUINTON (Paris 2014, 6 months)</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>
|
|
||||||
<span class="fr">PERSONNEL</span>
|
|
||||||
<span class="en">PERSONAL</span>
|
|
||||||
</h2>
|
|
||||||
<div
|
|
||||||
class="banner banner_size_0 banner_pause"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
|
|
||||||
<h4>
|
|
||||||
<span class="fr">engagement associatif</span>
|
|
||||||
<span class="en">volunteer work</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Vulgarisation et recherche contraception testiculaire,
|
|
||||||
ZEROMILLIONS, Paris, France, 2021-2024</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Popularisation and research into testicular contraception,
|
|
||||||
ZEROMILLIONS, Paris, France, 2021-2024</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Aide au logement, travail, administratif, et projets de vie de
|
|
||||||
personnes précaires, 2018-2024</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Help with housing, work, administration and life projects for
|
|
||||||
people on the margins of society, 2018-2024</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Distribution de nourriture, MIGRANTS-WILSON & SECOURS POPULAIRE,
|
|
||||||
2020-2022</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Food distribution, MIGRANTS-WILSON & SECOURS POPULAIRE,
|
|
||||||
2020-2022</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr"
|
|
||||||
>Cogestion des bénévoles d'un camp de réfugiés, UTOPIA 56,
|
|
||||||
Grande-Synthe, France, 2016</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>Co-management of volunteers in a refugee camp, UTOPIA 56,
|
|
||||||
Grande-Synthe, France, 2016</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<h4>
|
|
||||||
<span class="fr">centre d'intérêts</span>
|
|
||||||
<span class="en">interests</span>
|
|
||||||
</h4>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<span class="fr">vélo</span>
|
|
||||||
<span class="en">bicycle</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">magie</span>
|
|
||||||
<span class="en">magic tricks</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">noeuds</span>
|
|
||||||
<span class="en">knots</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">mathématiques et physiques</span>
|
|
||||||
<span class="en">mathematics and physics</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<span class="fr">politique</span>
|
|
||||||
<span class="en">politic</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mouse"><div class="frames mouse_3 pre"></div></div>
|
|
||||||
<div
|
|
||||||
class="banner banner_size_2 banner_reverse banner_speed_40 grid_full_width"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
PROJECTS
|
|
||||||
-->
|
|
||||||
<section id="projects" class="section">
|
|
||||||
<header>
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<h1 aria-label="projets">
|
|
||||||
<span aria-hidden="true" class="pre">
|
|
||||||
<span class="fr">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
<span class="en">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="">
|
|
||||||
<p>
|
|
||||||
<span class="fr">code-sources de tous les projets : </span>
|
|
||||||
<span class="en">source code for all projects : </span>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to git repositories"
|
|
||||||
></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2 class="">
|
|
||||||
<span class="fr">quelques exemples de projets réalisés :</span>
|
|
||||||
<span class="en">some examples of completed projects :</span>
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="projects_grid">
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_04_fdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/fdf_pyramide_loop_square_2_light.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr"
|
|
||||||
>programme qui creer une representation 3D filaire d'une carte
|
|
||||||
avec des points a differentes altitudes</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>program that creates a 3D wireframe representation of a map
|
|
||||||
with points at different altitudes</span
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_04_fdf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_10_cube3d"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/cube3d_tour_with_map_square.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr"
|
|
||||||
>mini jeu video utilisant le raycasting pour creer une
|
|
||||||
impression de deplacement dans un environnement 3D</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>mini video game using raycasting to create the impression of
|
|
||||||
movement in a 3D environment</span
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/42/42_INT_10_cube3d"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2023_WEBSITE_jipf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/ljdp_map_clusters_square_light.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr"
|
|
||||||
>plugin wordpress representant des evenements sur une carte avec
|
|
||||||
des marqueurs et des filtres de tris</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>wordpress plugin showing events on a map with markers and
|
|
||||||
sorting filters</span
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2023_WEBSITE_jipf"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
|
|
||||||
<figure class="project">
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2022_WEBSITE_kosmopolit"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
>
|
|
||||||
<img src="./docs/projects/kosmopolit_square.gif" />
|
|
||||||
</a>
|
|
||||||
<figcaption>
|
|
||||||
<p>
|
|
||||||
<span class="fr"
|
|
||||||
>site internet statique utilisant une structure uniquement en
|
|
||||||
html et css</span
|
|
||||||
>
|
|
||||||
<span class="en"
|
|
||||||
>static website using a structure based solely on html and
|
|
||||||
css</span
|
|
||||||
>
|
|
||||||
</p>
|
|
||||||
<a
|
|
||||||
href="https://gitea.hugulumu.com/pro/2022_WEBSITE_kosmopolit"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
title="link to the source code"
|
|
||||||
></a>
|
|
||||||
</figcaption>
|
|
||||||
</figure>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mouse"><div class="frames mouse_2 pre"></div></div>
|
|
||||||
<div
|
|
||||||
class="banner banner_size_3 banner_speed_20 banner_reverse grid_full_width"
|
|
||||||
aria-label="banner delimitation in ASCII art"
|
|
||||||
></div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
INFOS
|
|
||||||
-->
|
|
||||||
<section id="infos" class="footer section">
|
|
||||||
<article>
|
|
||||||
<a href="mailto:hugogogo@protonmail.com">hugogogo@protonmail.com</a>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<div class="mouse"><div class="frames mouse_4 pre"></div></div>
|
|
||||||
</section>
|
|
||||||
504
src/modules/cv.html
Normal file
504
src/modules/cv.html
Normal file
@@ -0,0 +1,504 @@
|
|||||||
|
<style>
|
||||||
|
#cv_section {
|
||||||
|
header {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: left;
|
||||||
|
width: auto;
|
||||||
|
max-width: 900px;
|
||||||
|
|
||||||
|
> *:last-child {
|
||||||
|
margin-bottom: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cv_download {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner {
|
||||||
|
margin: 0px 0px 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-top: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
border: 1px dashed black;
|
||||||
|
padding: 20px;
|
||||||
|
padding-left: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * *
|
||||||
|
* * * * * * * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||||
|
|
||||||
|
<section id="cv_section" class="section">
|
||||||
|
<header>
|
||||||
|
<!-- prettier-ignore -->
|
||||||
|
<h1 aria-label="curriculum vitae">
|
||||||
|
<span aria-hidden="true" class="pre">
|
||||||
|
<span class="fr en">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="cv">
|
||||||
|
<div class="cv_download">
|
||||||
|
<p>
|
||||||
|
<span class="fr">télécharger </span>
|
||||||
|
<span class="en">download </span>
|
||||||
|
:
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_FR.pdf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to pdf CV version graphical FR"
|
||||||
|
>
|
||||||
|
<span class="fr">[Graphique FR]</span>
|
||||||
|
<span class="en">[Graphical FR]</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_EN.pdf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to pdf CV version graphical EN"
|
||||||
|
>
|
||||||
|
<span class="fr">[Graphique EN]</span>
|
||||||
|
<span class="en">[Graphical EN]</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_Ats_FR.pdf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to pdf CV version ats FR"
|
||||||
|
>
|
||||||
|
<span class="fr">[ATS FR]</span>
|
||||||
|
<span class="en">[ATS FR]</span>
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="docs/cvs/CV_Hugo_Lamy_Backend_Embedded_Developer_Ats_EN.pdf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to pdf CV version ats EN"
|
||||||
|
>
|
||||||
|
<span class="fr">[ATS EN]</span>
|
||||||
|
<span class="en">[ATS EN]</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<span class="fr">EXPÉRIENCES</span>
|
||||||
|
<span class="en">WORK EXPERIENCES</span>
|
||||||
|
</h2>
|
||||||
|
<div
|
||||||
|
class="banner banner_size_0 banner_pause"
|
||||||
|
aria-label="banner delimitation in ASCII art"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<span class="fr">web full-stack</span>
|
||||||
|
<span class="en">web full-stack</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>BLOC-HOUSE: reprise du site d'une association d'artistes (fullstack,
|
||||||
|
php, javascript, html, css), 2023</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>BLOC-HOUSE: takeover of an artists' association website (fullstack,
|
||||||
|
php, javascript, html, css), 2023</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>TRANSCENDENCE: chat en ligne avec gestions des comptes et
|
||||||
|
notifications (fullstack, node.js, nest.js, websocket, svelte,
|
||||||
|
PostgreSQL)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>TRANSCENDENCE: online chat with account management and notifications
|
||||||
|
(fullstack, node.js, nest.js, websocket, svelte, PostgreSQL)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>FIPF: plugin qui gère les paiements, les roles, corrige les autres
|
||||||
|
plugins et des actions front-end (fullstack, js, php, bdd), 2024</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>FIPF: plugin that manages payments, roles, corrects other plugins and
|
||||||
|
front-end actions (fullstack, js, php, bdd), 2024</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>JIPF: utilise les API GoogleMaps pour afficher des données dynamiques
|
||||||
|
sur une carte avec des filtres, 2022</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>JIPF: uses GoogleMaps APIs to display dynamic data on a map, with
|
||||||
|
interactive filters</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>KOSMOPOLIT: front-end, integration d'un site statique pour une
|
||||||
|
association de litterature, (html, css atomique), 2022</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>KOSMOPOLIT: front-end, integration of a static site for a literature
|
||||||
|
association, (html, atomic css), 2022</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<span class="fr">devops</span>
|
||||||
|
<span class="en">devops</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>WEBSERV: création d'un serveur web non-bloquant en multiplexage,
|
||||||
|
capable de gérer des requetes http et envoyer du contenu (c++, linux
|
||||||
|
sockets)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>WEBSERV: creation of a non-blocking multiplexing web server capable
|
||||||
|
of managing http requests and sending content (c++, linux
|
||||||
|
sockets)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>MINITALK: utiliser les signaux système de linux pour creer une
|
||||||
|
communication en code ascii entre deux processus</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>MINITALK: using linux system signals to create ascii code
|
||||||
|
communication between two processes</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>INCEPTION: création de zéro d'ima-ges docker pour deployer wordpress
|
||||||
|
avec encription SSL (docker compose, mariaDB, NGINX, Wordpress)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>INCEPTION: creating docker images from scratch to deploy wordpress
|
||||||
|
with SSL encription (docker compose, mariaDB, NGINX, Wordpress)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<span class="fr">game</span>
|
||||||
|
<span class="en">game</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>CUBE 3D: jeu à la premiere personne utilisant le raycasting pour la
|
||||||
|
3d et les textures, et le clavier pour bouger (c, trigonométrie,
|
||||||
|
inputs)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>CUBE 3D: first-person game using raycasting for 3d and textures, and
|
||||||
|
the keyboard for movement (c, trigonometry, inputs)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>FDF: modélisation spatiale de formes en courbes de niveau à partir de
|
||||||
|
cartes (c, trigonometrie, inputs)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>FDF: spatial modelling of contour lines from maps with keyboard
|
||||||
|
control (c, trigonometrie, inputs)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<span class="fr">system</span>
|
||||||
|
<span class="en">system</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>MINISHELL: créer un shell capable de parser des prompts, exécuter des
|
||||||
|
programmes, et réagir aux signaux (c, bash, signals, fork, pipe,
|
||||||
|
readline)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>MINISHELL: creating a shell capable of parsing prompts, executing
|
||||||
|
programs, and listening to signals (c, bash, signals, fork, pipe,
|
||||||
|
readline)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>CONTAINERS: recoder 3 conteneurs c++ avec les iterateurs, surcharges,
|
||||||
|
et templates : map, vector, stack</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>CONTAINERS: recoding c++ containers with iterators, overloads and
|
||||||
|
templates : map, vector, stack</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>PUSHSWAP: algorithmes de tris avec deux piles et des mouvements
|
||||||
|
limités aux extrémités des piles (c)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>PUSHSWAP: sorting algorithms with two stacks and limited movement at
|
||||||
|
the ends of the stacks (c)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<span class="fr">COMPÉTENCES</span>
|
||||||
|
<span class="en">SKILLS</span>
|
||||||
|
</h2>
|
||||||
|
<div
|
||||||
|
class="banner banner_size_0 banner_pause"
|
||||||
|
aria-label="banner delimitation in ASCII art"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<span class="fr">hard skills</span>
|
||||||
|
<span class="en">hard skills</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Langages : C, C++, bash, JavaScript, PHP, CSS, HTML</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Languages : C, C++, bash, JavaScript, PHP, CSS, HTML</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx,
|
||||||
|
MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Technologies : Node.js, Git, Gitaction, Docker, Wordpress, Nginx,
|
||||||
|
MariaDB, Nest.js, Svelte, WebSocket, Express, npm, react</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Plus : emails, sending emails, receiving emails, deleting emails (the
|
||||||
|
it crowd S01E01)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Plus : emails, sending emails, receiving emails, deleting emails (the
|
||||||
|
it crowd S01E01)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h4>
|
||||||
|
<span class="fr">soft skills</span>
|
||||||
|
<span class="en">soft skills</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr">capacité d'apprentissage et autonomie</span>
|
||||||
|
<span class="en">learning ability, and autonomy</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">attention aux détails, patience</span>
|
||||||
|
<span class="en">attention to details, patience</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">adaptabilité et resolution de problemes</span>
|
||||||
|
<span class="en">adaptability and problem-solving</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">recevoir des feedbacks</span>
|
||||||
|
<span class="en">receiving feedback</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<span class="fr">FORMATIONS</span>
|
||||||
|
<span class="en">EDUCATIONS</span>
|
||||||
|
</h2>
|
||||||
|
<div
|
||||||
|
class="banner banner_size_0 banner_pause"
|
||||||
|
aria-label="banner delimitation in ASCII art"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<span class="fr">informatique</span>
|
||||||
|
<span class="en">computer science</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>École 42, Paris, 2021-2022, tronc commun - niveau 10 (C, C++,
|
||||||
|
système, algorithmie, réseaux)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>42 school, Paris, 2021-2022, common core - level 10 (C, C++, system,
|
||||||
|
algorithms, networks)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>SIMPLON, développeur full-stack JavaScript, 2018 (Javascript,
|
||||||
|
Node.js, React.js, HTML, CSS)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>SIMPLON, developer full-stack JavaScript, 2018 (Javascript, Node.js,
|
||||||
|
React.js, HTML, CSS)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h4>
|
||||||
|
<span class="fr">architecture</span>
|
||||||
|
<span class="en">architecture</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>3 stages : PERSPECTIVA (Houston, Texas, 2009, 3 mois), AS (Paris,
|
||||||
|
2012, 6 mois), JC QUINTON (Paris 2014, 6 mois)</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>3 internships : PERSPECTIVA (Houston, Texas, 2009, 3 months), AS
|
||||||
|
(Paris, 2012, 6 months), JC QUINTON (Paris 2014, 6 months)</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<span class="fr">PERSONNEL</span>
|
||||||
|
<span class="en">PERSONAL</span>
|
||||||
|
</h2>
|
||||||
|
<div
|
||||||
|
class="banner banner_size_0 banner_pause"
|
||||||
|
aria-label="banner delimitation in ASCII art"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<h4>
|
||||||
|
<span class="fr">engagement associatif</span>
|
||||||
|
<span class="en">volunteer work</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Vulgarisation et recherche contraception testiculaire, ZEROMILLIONS,
|
||||||
|
Paris, France, 2021-2024</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Popularisation and research into testicular contraception,
|
||||||
|
ZEROMILLIONS, Paris, France, 2021-2024</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Aide au logement, travail, administratif, et projets de vie de
|
||||||
|
personnes précaires, 2018-2024</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Help with housing, work, administration and life projects for people
|
||||||
|
on the margins of society, 2018-2024</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Distribution de nourriture, MIGRANTS-WILSON & SECOURS POPULAIRE,
|
||||||
|
2020-2022</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Food distribution, MIGRANTS-WILSON & SECOURS POPULAIRE,
|
||||||
|
2020-2022</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr"
|
||||||
|
>Cogestion des bénévoles d'un camp de réfugiés, UTOPIA 56,
|
||||||
|
Grande-Synthe, France, 2016</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>Co-management of volunteers in a refugee camp, UTOPIA 56,
|
||||||
|
Grande-Synthe, France, 2016</span
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h4>
|
||||||
|
<span class="fr">centre d'intérêts</span>
|
||||||
|
<span class="en">interests</span>
|
||||||
|
</h4>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<span class="fr">vélo</span>
|
||||||
|
<span class="en">bicycle</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">magie</span>
|
||||||
|
<span class="en">magic tricks</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">noeuds</span>
|
||||||
|
<span class="en">knots</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">mathématiques et physiques</span>
|
||||||
|
<span class="en">mathematics and physics</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="fr">politique</span>
|
||||||
|
<span class="en">politic</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_3 pre"></div></div>
|
||||||
|
<div
|
||||||
|
class="banner banner_size_2 banner_reverse banner_speed_40 grid_full_width"
|
||||||
|
aria-label="banner delimitation in ASCII art"
|
||||||
|
></div>
|
||||||
|
</section>
|
||||||
@@ -1,4 +1,79 @@
|
|||||||
<section class="section hero" id="hero">
|
<style>
|
||||||
|
/* specific banners */
|
||||||
|
#top_banner {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hero_section {
|
||||||
|
min-height: 100vh;
|
||||||
|
grid-template-columns: 1fr auto 1fr;
|
||||||
|
grid-template-rows: 1fr auto auto;
|
||||||
|
|
||||||
|
.title {
|
||||||
|
/*
|
||||||
|
older safari doesn't not support flex gap
|
||||||
|
I could use a workaround :
|
||||||
|
https://stackoverflow.com/questions/65452057/flexbox-gap-workaround-for-safari
|
||||||
|
but it doesn't work with wrap
|
||||||
|
so instead I make them in columns and add a margin
|
||||||
|
|
||||||
|
gap: 10px 30px;
|
||||||
|
*/
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
> *:first-child {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&#name {
|
||||||
|
margin: 30px 0px 20px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&#title {
|
||||||
|
margin: 20px 0px 20px 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
text-align: center;
|
||||||
|
display: inline-block;
|
||||||
|
max-width: 700px;
|
||||||
|
margin: 0px auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * *
|
||||||
|
* * * * * * * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
I moved this outside the hero section,
|
||||||
|
so that i can change my mind to put it or not without having to change the grid rows height
|
||||||
|
-->
|
||||||
|
<div
|
||||||
|
id="top_banner"
|
||||||
|
class="banner banner_size_0 banner_speed_50 banner_reverse grid_full_width"
|
||||||
|
aria-label="banner delimitation in ASCII art"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<section class="section hero" id="hero_section">
|
||||||
<header>
|
<header>
|
||||||
<!-- prettier-ignore -->
|
<!-- prettier-ignore -->
|
||||||
<h1 aria-label="hugo lamy" id="name" class="title">
|
<h1 aria-label="hugo lamy" id="name" class="title">
|
||||||
|
|||||||
30
src/modules/infos.html
Normal file
30
src/modules/infos.html
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<style>
|
||||||
|
#infos article {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
place-content: center;
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * *
|
||||||
|
* * * * * * * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||||
|
|
||||||
|
<section id="infos" class="footer section">
|
||||||
|
<article>
|
||||||
|
<a href="mailto:hugogogo@protonmail.com">hugogogo@protonmail.com</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_4 pre"></div></div>
|
||||||
|
</section>
|
||||||
86
src/modules/language.html
Normal file
86
src/modules/language.html
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<style>
|
||||||
|
input#language {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
label#language_label {
|
||||||
|
position: fixed;
|
||||||
|
top: 20px;
|
||||||
|
right: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
.flag {
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SWITCH FLAG
|
||||||
|
*/
|
||||||
|
#language {
|
||||||
|
&:not(:checked) + #language_label {
|
||||||
|
#fr {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#en {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked + #language_label {
|
||||||
|
#fr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#en {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SWITCH LANGUAGE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#language {
|
||||||
|
~ * .fr,
|
||||||
|
~ * .en {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:checked) ~ * .en {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:checked ~ * .fr {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * *
|
||||||
|
* * * * * * * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||||
|
|
||||||
|
<input type="checkbox" id="language" />
|
||||||
|
<label id="language_label" for="language">
|
||||||
|
<span id="fr"
|
||||||
|
><img class="flag" src="./docs/flags/fr_bnw.svg" alt="french flag"
|
||||||
|
/></span>
|
||||||
|
<span id="en"
|
||||||
|
><img class="flag" src="./docs/flags/gb_bnw.svg" alt="english flag"
|
||||||
|
/></span>
|
||||||
|
</label>
|
||||||
203
src/modules/projects.html
Normal file
203
src/modules/projects.html
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
<style>
|
||||||
|
#projects {
|
||||||
|
header {
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects_grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(200px, auto));
|
||||||
|
grid-template-columns: repeat(2, minmax(100px, auto));
|
||||||
|
grid-template-columns: repeat(2, minmax(100px, 500px));
|
||||||
|
grid-gap: 20px;
|
||||||
|
|
||||||
|
figure figcaption {
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mouse {
|
||||||
|
margin-top: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * * *
|
||||||
|
* * * * * * * * *
|
||||||
|
* * * * * * * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * *
|
||||||
|
* * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
||||||
|
|
||||||
|
<section id="projects" class="section">
|
||||||
|
<header>
|
||||||
|
<!-- prettier-ignore -->
|
||||||
|
<h1 aria-label="projets">
|
||||||
|
<span aria-hidden="true" class="pre">
|
||||||
|
<span class="fr">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<span class="en">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="">
|
||||||
|
<p>
|
||||||
|
<span class="fr">code-sources de tous les projets : </span>
|
||||||
|
<span class="en">source code for all projects : </span>
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to git repositories"
|
||||||
|
></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2 class="">
|
||||||
|
<span class="fr">quelques exemples de projets réalisés :</span>
|
||||||
|
<span class="en">some examples of completed projects :</span>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="projects_grid">
|
||||||
|
<figure class="project">
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/42/42_INT_04_fdf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
>
|
||||||
|
<img src="./docs/projects/fdf_pyramide_loop_square_2_light.gif" />
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr"
|
||||||
|
>programme qui creer une representation 3D filaire d'une carte avec
|
||||||
|
des points a differentes altitudes</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>program that creates a 3D wireframe representation of a map with
|
||||||
|
points at different altitudes</span
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/42/42_INT_04_fdf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<figure class="project">
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/42/42_INT_10_cube3d"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
>
|
||||||
|
<img src="./docs/projects/cube3d_tour_with_map_square.gif" />
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr"
|
||||||
|
>mini jeu video utilisant le raycasting pour creer une impression de
|
||||||
|
deplacement dans un environnement 3D</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>mini video game using raycasting to create the impression of
|
||||||
|
movement in a 3D environment</span
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/42/42_INT_10_cube3d"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<figure class="project">
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/pro/2023_WEBSITE_jipf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
>
|
||||||
|
<img src="./docs/projects/ljdp_map_clusters_square_light.gif" />
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr"
|
||||||
|
>plugin wordpress representant des evenements sur une carte avec des
|
||||||
|
marqueurs et des filtres de tris</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>wordpress plugin showing events on a map with markers and sorting
|
||||||
|
filters</span
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/pro/2023_WEBSITE_jipf"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<figure class="project">
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/pro/2022_WEBSITE_kosmopolit"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
>
|
||||||
|
<img src="./docs/projects/kosmopolit_square.gif" />
|
||||||
|
</a>
|
||||||
|
<figcaption>
|
||||||
|
<p>
|
||||||
|
<span class="fr"
|
||||||
|
>site internet statique utilisant une structure uniquement en html
|
||||||
|
et css</span
|
||||||
|
>
|
||||||
|
<span class="en"
|
||||||
|
>static website using a structure based solely on html and css</span
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
href="https://gitea.hugulumu.com/pro/2022_WEBSITE_kosmopolit"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
title="link to the source code"
|
||||||
|
></a>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mouse"><div class="frames mouse_2 pre"></div></div>
|
||||||
|
<div
|
||||||
|
class="banner banner_size_3 banner_speed_20 banner_reverse grid_full_width"
|
||||||
|
aria-label="banner delimitation in ASCII art"
|
||||||
|
></div>
|
||||||
|
</section>
|
||||||
@@ -91,11 +91,3 @@
|
|||||||
--banner_height: calc(var(--base_banner_height) * 5);
|
--banner_height: calc(var(--base_banner_height) * 5);
|
||||||
--dot_size: calc(var(--base_dot_size) * 5);
|
--dot_size: calc(var(--base_dot_size) * 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* specific banners */
|
|
||||||
#top_banner {
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|||||||
25
src/styles/base.css
Normal file
25
src/styles/base.css
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
:root {
|
||||||
|
--base_font_size: 62.5%;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
font-size: var(--base_font_size);
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
overflow-x: clip;
|
||||||
|
margin: auto;
|
||||||
|
width: fit-content;
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */
|
||||||
|
/* Animate scrolling only if users don’t prefer reduced motion */
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add some spacing between the target and the top of the viewport */
|
||||||
|
:target {
|
||||||
|
scroll-margin-top: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
#cv {
|
|
||||||
header {
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.cv {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: left;
|
|
||||||
width: auto;
|
|
||||||
max-width: 900px;
|
|
||||||
|
|
||||||
> *:last-child {
|
|
||||||
margin-bottom: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cv_download {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 10px;
|
|
||||||
margin-top: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner {
|
|
||||||
margin: 0px 0px 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
margin-top: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
border: 1px dashed black;
|
|
||||||
padding: 20px;
|
|
||||||
padding-left: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
#hero {
|
|
||||||
min-height: 100vh;
|
|
||||||
grid-template-columns: 1fr auto 1fr;
|
|
||||||
/*
|
|
||||||
* WIP : trying to find a solution to have both qualities :
|
|
||||||
* - elements are spread across the page vertically ('hugo lamy developpeur' is not compacted on top)
|
|
||||||
* - the details element 'voir le cv' don't jump when we unroll it
|
|
||||||
*
|
|
||||||
grid-template-rows: 1fr auto 1fr;
|
|
||||||
grid-template-rows: auto auto 1fr;
|
|
||||||
*/
|
|
||||||
grid-template-rows: 50vh 1fr;
|
|
||||||
|
|
||||||
.title {
|
|
||||||
/*
|
|
||||||
older safari doesn't not support flex gap
|
|
||||||
I could use a workaround :
|
|
||||||
https://stackoverflow.com/questions/65452057/flexbox-gap-workaround-for-safari
|
|
||||||
but it doesn't work with wrap
|
|
||||||
so instead I make them in columns and add a margin
|
|
||||||
|
|
||||||
gap: 10px 30px;
|
|
||||||
*/
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
> *:first-child {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&#name {
|
|
||||||
margin: 30px 0px 20px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&#title {
|
|
||||||
margin: 20px 0px 20px 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.subtitle {
|
|
||||||
text-align: center;
|
|
||||||
display: inline-block;
|
|
||||||
max-width: 700px;
|
|
||||||
margin: 0px auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#infos article {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
place-content: center;
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#projects {
|
|
||||||
header {
|
|
||||||
height: 300px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#projects .projects_grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(auto-fit, minmax(200px, auto));
|
|
||||||
grid-template-columns: repeat(2, minmax(100px, auto));
|
|
||||||
grid-template-columns: repeat(2, minmax(100px, 500px));
|
|
||||||
grid-gap: 20px;
|
|
||||||
}
|
|
||||||
#projects .projects_grid figure {
|
|
||||||
}
|
|
||||||
#projects .projects_grid figure figcaption {
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#projects .mouse {
|
|
||||||
margin-top: 100px;
|
|
||||||
}
|
|
||||||
@@ -1,248 +0,0 @@
|
|||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* RESET CSS *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
body * {
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
input,
|
|
||||||
button,
|
|
||||||
textarea,
|
|
||||||
select {
|
|
||||||
/* Remove built-in form typography styles */
|
|
||||||
font: inherit;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
}
|
|
||||||
img,
|
|
||||||
picture,
|
|
||||||
video,
|
|
||||||
canvas,
|
|
||||||
svg {
|
|
||||||
display: block;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
li,
|
|
||||||
p,
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4,
|
|
||||||
h5,
|
|
||||||
h6 {
|
|
||||||
/* Avoid text overflows
|
|
||||||
overflow-wrap: break-word;
|
|
||||||
*/
|
|
||||||
overflow-wrap: anywhere;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* style details elements */
|
|
||||||
details summary {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
details summary > * {
|
|
||||||
/* allow to put h1 or anything inside the summary without breaking the line */
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
script,
|
|
||||||
style {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* GLOBAL CSS *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
:root {
|
|
||||||
--base_font_size: 62.5%;
|
|
||||||
}
|
|
||||||
html {
|
|
||||||
font-size: var(--base_font_size);
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
overflow-x: clip;
|
|
||||||
margin: auto;
|
|
||||||
width: fit-content;
|
|
||||||
background-color: #f6f6f6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */
|
|
||||||
/* Animate scrolling only if users don’t prefer reduced motion */
|
|
||||||
@media (prefers-reduced-motion: no-preference) {
|
|
||||||
html {
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add some spacing between the target and the top of the viewport */
|
|
||||||
:target {
|
|
||||||
scroll-margin-top: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* TEXT CSS *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "notomono";
|
|
||||||
src: url("./fonts/notomono/NotoMono-Dot.woff") format("woff");
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
body,
|
|
||||||
pre {
|
|
||||||
font-family: "notomono", monospace;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 500px) {
|
|
||||||
html {
|
|
||||||
font-size: calc(var(--base_font_size) * 1.2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ul {
|
|
||||||
display: block;
|
|
||||||
list-style-type: "• ";
|
|
||||||
padding-left: 25px;
|
|
||||||
/*
|
|
||||||
list-style-position: inside;
|
|
||||||
*/
|
|
||||||
list-style-position: outside;
|
|
||||||
}
|
|
||||||
li {
|
|
||||||
display: list-item;
|
|
||||||
}
|
|
||||||
li::marker {
|
|
||||||
font-size: 1.8rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:empty::after {
|
|
||||||
content: attr(href);
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
margin: 30px 0px;
|
|
||||||
font-size: 2.25rem;
|
|
||||||
}
|
|
||||||
h2 {
|
|
||||||
margin: 30px 0px;
|
|
||||||
font-size: 2rem;
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
margin: 20px 0px;
|
|
||||||
font-size: 1.75rem;
|
|
||||||
}
|
|
||||||
h4 {
|
|
||||||
margin: 20px 0px;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
h5 {
|
|
||||||
margin: 10px 0px;
|
|
||||||
font-size: 1.25rem;
|
|
||||||
}
|
|
||||||
h6 {
|
|
||||||
margin: 10px 0px;
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pre,
|
|
||||||
pre {
|
|
||||||
display: flex;
|
|
||||||
white-space: pre;
|
|
||||||
line-height: 0.8;
|
|
||||||
font-size: min(2.1vw, 1rem);
|
|
||||||
}
|
|
||||||
.pre_small {
|
|
||||||
font-size: min(1.5vw, 0.7rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* SECTIONS GLOBAL CSS *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
section {
|
|
||||||
display: grid;
|
|
||||||
margin: 0px;
|
|
||||||
width: 100vw;
|
|
||||||
grid-template-columns: auto auto auto;
|
|
||||||
grid-auto-rows: auto;
|
|
||||||
grid-gap: 10px;
|
|
||||||
gap: 10px;
|
|
||||||
min-height: 100vh;
|
|
||||||
justify-items: center;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
> * {
|
|
||||||
grid-column: 2 / span 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
> .grid_full_width {
|
|
||||||
grid-column: 1 / span 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
header {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
place-content: center;
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
article {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.banner {
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
/* https://stackoverflow.com/questions/62107074/how-to-hide-a-text-and-make-it-accessible-by-screen-reader */
|
|
||||||
.visually-hidden {
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
position: absolute !important;
|
|
||||||
height: 1px;
|
|
||||||
width: 1px;
|
|
||||||
overflow: hidden;
|
|
||||||
outline: none;
|
|
||||||
box-shadow: none;
|
|
||||||
clip: rect(1px 1px 1px 1px); /* IE6, IE7 - a 0 height clip, off to the bottom right of the visible 1px box */
|
|
||||||
clip: rect(1px, 1px, 1px, 1px); /* maybe deprecated but we need to support legacy browsers */
|
|
||||||
clip-path: inset(50%); /* modern browsers, clip-path works inwards from each corner */
|
|
||||||
white-space: nowrap; /* added line to stop words getting smushed together (as they go onto separate lines and some screen readers do not understand line feeds as a space) */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.margin_top_small {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.margin_bottom_small {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.margin_top_big {
|
|
||||||
margin-top: 50px;
|
|
||||||
}
|
|
||||||
.margin_bottom_big {
|
|
||||||
margin-bottom: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
DATA-FLEX
|
|
||||||
|
|
||||||
direction width childrens childrens childrens
|
|
||||||
position main axis cross axis
|
|
||||||
|
|
||||||
[/]-horizontal [/]-parent [/]-center [/]-pack [/]-fit
|
|
||||||
[/] vertical [/] content [/] left [/]-wrap [/] stretch
|
|
||||||
[/] right [/] nowrap
|
|
||||||
[/] top [/] grow
|
|
||||||
[/] bottom [/] space
|
|
||||||
[/] spread
|
|
||||||
[/] gap
|
|
||||||
-> for GAP, you can custom the value with 'style="--gap:?px;"'
|
|
||||||
*/
|
|
||||||
[data-flex] {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
width: auto;
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
}
|
|
||||||
[data-flex] > * {
|
|
||||||
flex-grow: 0;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
direction : -horizontal- vertical
|
|
||||||
*/
|
|
||||||
[data-flex~="horizontal"] { flex-direction: row; }
|
|
||||||
[data-flex~="vertical"] { flex-direction: column; }
|
|
||||||
/*
|
|
||||||
width : -parent- content
|
|
||||||
*/
|
|
||||||
[data-flex~="parent"] {
|
|
||||||
width: 100%;
|
|
||||||
width: -moz-available; /* WebKit-based browsers will ignore this. */
|
|
||||||
width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
|
|
||||||
width: fill-available;
|
|
||||||
}
|
|
||||||
[data-flex~="content"] { width: fit-content; }
|
|
||||||
/*
|
|
||||||
position : -center- left right top bottom
|
|
||||||
*/
|
|
||||||
[data-flex~="left"] ,[data-flex~="vertical"][data-flex~="left"] { align-items: flex-start; text-align: left; }
|
|
||||||
[data-flex~="right"] ,[data-flex~="vertical"][data-flex~="right"] { align-items: flex-end; text-align: right; }
|
|
||||||
[data-flex~="top"] ,[data-flex~="vertical"][data-flex~="top"] { justify-content: flex-start; }
|
|
||||||
[data-flex~="bottom"] ,[data-flex~="vertical"][data-flex~="bottom"] { justify-content: flex-end; }
|
|
||||||
[data-flex~="center"] ,[data-flex~="vertical"][data-flex~="center"] { align-items: center; text-align: center; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="left"] { justify-content: flex-start; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="right"] { justify-content: flex-end; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="top"] { align-items: flex-start; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="bottom"] { align-items: flex-end; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="center"] { }
|
|
||||||
/*
|
|
||||||
main axis : -pack- space spread grow wrap gap
|
|
||||||
*/
|
|
||||||
[data-flex~="pack"] > * ,[data-flex~="vertical"][data-flex~="pack"] > * { flex-grow: 0; }
|
|
||||||
[data-flex~="space"] ,[data-flex~="vertical"][data-flex~="space"] { justify-content: space-around; }
|
|
||||||
[data-flex~="spread"] ,[data-flex~="vertical"][data-flex~="spread"] { justify-content: space-between; }
|
|
||||||
[data-flex~="grow"] > * ,[data-flex~="vertical"][data-flex~="grow"] > * { flex-grow: 1; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="pack"] > * { flex-grow: 0; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="space"] { justify-content: space-around; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="spread"] { justify-content: space-between; }
|
|
||||||
[data-flex~="horizontal"][data-flex~="grow"] > * { flex-grow: 1; }
|
|
||||||
[data-flex~="wrap"] { flex-wrap: wrap; }
|
|
||||||
/*
|
|
||||||
cross axis : -fit- stretch
|
|
||||||
*/
|
|
||||||
[data-flex~="horizontal"][data-flex~="fit"],
|
|
||||||
[data-flex~="vertical"][data-flex~="fit"] { }
|
|
||||||
[data-flex~="horizontal"][data-flex~="stretch"],
|
|
||||||
[data-flex~="vertical"][data-flex~="stretch"] { align-items: stretch; }
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
input#language {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
label#language_label {
|
|
||||||
position: fixed;
|
|
||||||
top: 20px;
|
|
||||||
right: 20px;
|
|
||||||
padding: 10px;
|
|
||||||
cursor: pointer;
|
|
||||||
z-index: 1;
|
|
||||||
|
|
||||||
.flag {
|
|
||||||
width: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SWITCH FLAG
|
|
||||||
*/
|
|
||||||
#language {
|
|
||||||
&:not(:checked) + #language_label {
|
|
||||||
#fr {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#en {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:checked + #language_label {
|
|
||||||
#fr {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#en {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SWITCH LANGUAGE
|
|
||||||
*/
|
|
||||||
|
|
||||||
#language {
|
|
||||||
~ * .fr,
|
|
||||||
~ * .en {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(:checked) ~ * .en {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:checked ~ * .fr {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +1,24 @@
|
|||||||
@import "./mouses/mouse_1.css";
|
|
||||||
@import "./mouses/mouse_2.css";
|
|
||||||
@import "./mouses/mouse_3.css";
|
|
||||||
@import "./mouses/mouse_4.css";
|
|
||||||
|
|
||||||
.mouse {
|
.mouse {
|
||||||
margin: auto;
|
margin: auto;
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
|
||||||
.mouse .frames {
|
.frames {
|
||||||
position: relative;
|
position: relative;
|
||||||
animation: mouse_move infinite 2s normal steps(4);
|
animation: mouse_move infinite 2s normal steps(4);
|
||||||
}
|
|
||||||
.mouse .frames::before {
|
&::before {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
}
|
}
|
||||||
.mouse .frames::after {
|
|
||||||
position: absolute;
|
&::after {
|
||||||
top: 100%;
|
position: absolute;
|
||||||
left: 0px;
|
top: 100%;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -30,7 +28,342 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@keyframes mouse_move {
|
@keyframes mouse_move {
|
||||||
0% {transform: translateY(0%);}
|
0% {
|
||||||
100% {transform: translateY(-400%);}
|
transform: translateY(0%);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateY(-400%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* MOUSE 1 *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
.mouse_1::before {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
.mouse_1::after {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* MOUSE 2 *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
.mouse_2::before {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
.mouse_2::after {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* MOUSE 3 *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
.mouse_3::before {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
.mouse_3::after {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* MOUSE 4 *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* *
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
.mouse_4::before {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
.mouse_4::after {
|
||||||
|
content: "\
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
\a
|
||||||
|
";
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
.mouse_1::before {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
.mouse_1::after {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
.mouse_2::before {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
.mouse_2::after {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
.mouse_3::before {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
.mouse_3::after {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
.mouse_4::before {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
.mouse_4::after {
|
|
||||||
content:'\
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
\a
|
|
||||||
';
|
|
||||||
}
|
|
||||||
47
src/styles/reset.css
Normal file
47
src/styles/reset.css
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
body * {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
textarea,
|
||||||
|
select {
|
||||||
|
/* Remove built-in form typography styles */
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
img,
|
||||||
|
picture,
|
||||||
|
video,
|
||||||
|
canvas,
|
||||||
|
svg {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
li,
|
||||||
|
p,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
/* Avoid text overflows
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
*/
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* style details elements */
|
||||||
|
details summary {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
details summary > * {
|
||||||
|
/* allow to put h1 or anything inside the summary without breaking the line */
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
script,
|
||||||
|
style {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
76
src/styles/text.css
Normal file
76
src/styles/text.css
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "notomono";
|
||||||
|
src: url("./fonts/notomono/NotoMono-Dot.woff") format("woff");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
body,
|
||||||
|
pre {
|
||||||
|
font-family: "notomono", monospace;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
html {
|
||||||
|
font-size: calc(var(--base_font_size) * 1.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
display: block;
|
||||||
|
list-style-type: "• ";
|
||||||
|
padding-left: 25px;
|
||||||
|
/*
|
||||||
|
list-style-position: inside;
|
||||||
|
*/
|
||||||
|
list-style-position: outside;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
display: list-item;
|
||||||
|
}
|
||||||
|
li::marker {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:empty::after {
|
||||||
|
content: attr(href);
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
margin: 30px 0px;
|
||||||
|
font-size: 2.25rem;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin: 30px 0px;
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin: 20px 0px;
|
||||||
|
font-size: 1.75rem;
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
margin: 20px 0px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
margin: 10px 0px;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
h6 {
|
||||||
|
margin: 10px 0px;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pre,
|
||||||
|
pre {
|
||||||
|
display: flex;
|
||||||
|
white-space: pre;
|
||||||
|
line-height: 0.8;
|
||||||
|
font-size: min(2.1vw, 1rem);
|
||||||
|
}
|
||||||
|
.pre_small {
|
||||||
|
font-size: min(1.5vw, 0.7rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user