67 Commits

Author SHA1 Message Date
Hugo LAMY
2c748c5217 wip fill cv 2026-03-17 18:57:43 +01:00
Hugo LAMY
a95d01b026 language default to fr 2026-03-17 18:21:22 +01:00
Hugo LAMY
d728897805 complete modulation of html 2026-03-17 18:16:21 +01:00
Hugo LAMY
704483f6e6 wip adding php include 2026-03-17 14:09:41 +01:00
Hugo LAMY
cd97001cc0 update cvs and css 2026-03-15 15:38:17 +01:00
hugo LAMY
dfc4f55709 updated presentation text 2026-03-04 15:57:24 +01:00
hugo LAMY
2c8ae62e4b fix hero section 2026-03-04 15:54:51 +01:00
hugo LAMY
eacd26e532 adding cv header 2026-03-04 15:50:18 +01:00
hugo LAMY
8ac697b6e3 fix dot words alignment 2026-03-04 14:55:24 +01:00
hugo LAMY
f43afab585 update cv unfolded and mail is link 2026-03-04 14:41:01 +01:00
asus
0764207780 changed pdf name to avoid cach 2024-06-19 16:35:37 +02:00
asus
d040932217 new version of cvs 2024-06-19 15:32:07 +02:00
asus
c633026376 changed errors spoted by luck 2024-06-19 15:21:25 +02:00
asus
de4be9e248 added validator address in reamde 2024-06-15 11:48:40 +02:00
asus
b52842c254 small fixe on spaces in hero section 2024-06-08 12:08:58 +02:00
asus
5b1ea933f6 moved and add all cv into cvs 2024-06-08 11:22:59 +02:00
asus
ecabfcc392 removed htaccess content, it was not working as intended 2024-06-08 11:15:23 +02:00
asus
d9a6269f13 trying htaccess to prevent access to certain content 2024-06-08 11:13:53 +02:00
asus
c08dff5171 added margin auto to subtitle in hero and cv section 2024-06-07 23:32:58 +02:00
asus
0b55e2cdb3 removed the default open details 2024-06-07 23:29:00 +02:00
asus
9edec3714e added all cv section in both french and english, plus the phrase 2024-06-07 23:28:08 +02:00
asus
e27344b350 started to fill new content into cv 2024-06-06 12:14:58 +02:00
asus
d72c5ea2de changed hero title height from auto to 50vh to take more consistant space 2024-06-02 19:20:34 +02:00
asus
92b75b3239 reverse last commit to have the cv as a details on top hero section again 2024-06-02 19:17:17 +02:00
asus
2e03ec0ae9 Revert "fixed text error in download pdf"
to have the cv in hero section again

This reverts commit 69b111b1e2.
2024-06-02 19:15:58 +02:00
asus
32ea6d6cf4 mv cv in its own section 2024-06-02 12:24:53 +02:00
asus
69b111b1e2 fixed text error in download pdf 2024-05-30 09:13:39 +02:00
asus
3f6eb8e78b fixed error duplicate class for download 2024-05-28 11:23:28 +02:00
asus
4642f33e0a fixed error in cv download id 2024-05-28 11:21:54 +02:00
asus
af9543e1f1 added space before downlad cv 2024-05-28 11:15:32 +02:00
asus
801576af7a changed flag from position fixed to absolute so it does not follow the page while scrolling 2024-05-28 11:13:34 +02:00
asus
f414587ec3 changed language text into flags 2024-05-28 11:11:39 +02:00
asus
1056f8ea5c translation done 2024-05-28 10:22:07 +02:00
asus
ad737c57dc translate cv 2024-05-28 10:18:30 +02:00
asus
fdd16bbd3e wip almost all texts have been duplicated, still need to translate 2024-05-27 17:25:13 +02:00
asus
0c7860fee9 version compatible with old browser not supporting has 2024-05-27 17:21:48 +02:00
asus
d545c2ef28 first version of switch button for language 2024-05-27 17:12:30 +02:00
asus
e21e5b8938 changed svg files to work with older browsers for the pre white-space, using old xml:space instead 2024-05-27 15:42:56 +02:00
asus
680c5808a3 added break word on all letters for links 2024-05-27 14:23:09 +02:00
asus
8ac471331f css is now in old form 2024-05-27 14:18:48 +02:00
asus
04883ef891 renamed projects_square into projects 2024-05-27 14:10:19 +02:00
asus
8a69f25113 deleted old projects folder 2024-05-27 14:08:29 +02:00
asus
d60b3580c0 deleted unused svg mouse 2024-05-27 14:04:20 +02:00
asus
744c2aedcb mouses are now using transform instead of top to work on chrome 2024-05-27 14:00:55 +02:00
asus
86869399fb projects are now a grid 2024-05-26 13:34:59 +02:00
asus
9ba7801d03 added new version of kosmopolit gif 2024-05-26 13:34:41 +02:00
asus
6e13db6a95 added more gif 2024-05-26 12:20:22 +02:00
asus
67bc569749 wip added figcaption 2024-05-25 15:43:37 +02:00
asus
785be3e6ac wip change projects for grid of figures 2024-05-25 15:42:20 +02:00
asus
5c6f636e4d added jipf project 2024-05-25 15:41:57 +02:00
asus
d93015f2fa added second project gif 2024-05-19 12:39:19 +02:00
asus
00485dbc70 wip design is mobile first with some bugs 2024-05-19 12:26:30 +02:00
asus
527424df53 wip images in projects 2024-05-18 15:54:08 +02:00
asus
1742985974 small modifs in project section 2024-05-17 22:52:36 +02:00
asus
40048d3871 starting to put the project new content 2024-05-17 15:06:19 +02:00
asus
877c5eb271 re start animation banner 2024-05-17 14:16:57 +02:00
asus
875a79816b fixed some typo and grid error for last section 2024-05-17 14:15:55 +02:00
asus
ac836798b9 unified dot size responsivness for banner and mouses 2024-05-17 14:09:42 +02:00
asus
a40ab0b203 fixed small error in hero section : unrolling cv was creating a jump 2024-05-17 13:38:25 +02:00
asus
9302e725db small fix in hero layout for space on top 2024-05-17 11:59:09 +02:00
asus
c9150faa52 layout ok on firefox 2024-05-17 11:38:17 +02:00
asus
f5c7b07aad cv pudated 2024-05-15 22:53:24 +02:00
asus
4f5cd77c81 - removed nav
- moved cv to the hero section
- also changed it to collapse all at once instead of by sub titles
- and changed grid to auto flow instead of using named areas
2024-05-15 19:28:57 +02:00
asus
f042247cbb animation mouse in css is working 2024-05-15 15:49:48 +02:00
asus
b517d26ece index modified for merge 2024-05-15 11:55:24 +02:00
asus
668aad3c59 merging conflict 2024-05-15 11:50:31 +02:00
asus
ac1d84fc9a reverted last 3 commits 2024-01-21 12:16:30 +01:00
73 changed files with 3989 additions and 1975 deletions

13
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,13 @@
{
// Use Prettier as the default formatter for HTML, CSS, and PHP
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
}
}

271
README.md

File diff suppressed because one or more lines are too long

View File

@@ -1,354 +0,0 @@
·•◦●∘⬤
- 183 : ·
- 8226 : •
- 8729 : ∙
- 9679 : ●
- 9899 : ⚫
- 11044 : ⬤
- 57352
- 57894
- 58140
- 58189
- 58423
- 58470
- 58471
- 58472
- 58736 "Private Use Area"
- 58737 "Private Use Area"
- 61434 "Private Use Area"
- 61713 "Private Use Area"
- 57442 (0xe062) U+E062 "uniE062" - 
- 57443 (0xe063) U+E063 "uniE063" - 
- 57444 (0xe064) U+E064 "uniE064" - 
- 57445 (0xe065) U+E065 "uniE065" - 
- 57446 (0xe066) U+E066 "uniE066" - 
- 57447 (0xe067) U+E067 "uniE067" - 
1229 * (1638 + 410)
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • ••••
• • • • • • • • • • • •• •• •• •• • • • • •
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • ••••
• • • • • • • • • • • • • • • • • • • •
• • • ••••• ••••• • • • • • • • • ••••• ••••• • •
••••• • • ••••• ••••• •••• • • ••• ••••• ••••• ••• • • •••••
• •• • • • • • • •• •• • • • • • • • • •
• • • • •••• • • •••• • • • ••••• • • • • • • ••••
• • •• • • • • • • • • • • • • • • • • •
••••• • • • ••••• • • • • • • • ••••• ••• ••••• •••••
             
                   
                 
                   
                
              
                  
                  
                   
               
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
•••• •••• ••••• ••••• •••• ••• • • • • ••••• • • •••• ••••• • • ••••• ••••• •••• • • ••• ••••• ••••• ••• • • •••••
• • • • • • • • • • • •• •• •• •• • • • • • • •• • • • • • • •• •• • • • • • • • • •
•••• •••• • • • •• •••• ••••• • • • • • • •••• • • •••• • • • • •••• • • •••• • • • ••••• • • • • • • ••••
• • • • • • • • • • • • • • • • • • • • • • •• • • • • • • • • • • • • • • • • •
• • • ••••• ••••• • • • • • • • • ••••• ••••• • • ••••• • • • ••••• • • • • • • • ••••• ••• ••••• •••••
                            
                                      
                                    
                                       
                                
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
•• ••••• •••••
••• • • • • ••
•••• • •••• • • • •
•• •• • • • • • • • •
•• •• • • • ••• •••••
•• •• • •• •
•• •• • •• •
•• ••••••••• • • •
•• •• • •••• ••••• •
•• •• • • • • • • •
•• •• • • • • •• • •
•••• • •• •• •• •
••• • ••••••• • • •••
•• • • •••••
•••••••• • • •
  
     
      
         
      
    
    
    
     
        
        
     
     
   
   
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
•• •
• • •••••••
• •• • •
••••• • • • •
• • • • • •
• • • •• •
• • • •
• • ••
••• • •
• ••••• •
• •
•• •
 
  
   
    
     
    
   
  
  
  
 
 
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
•••• •
• • •
• • •
• •••
•••••
• •
• •
• •
••• •••
• • • •
• • • •
•••• ••••
• • • • •
••• • • •
••••••••
 
  
  
 

 
 
 
 
   
   
 
    
   

------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
•• •
• • •
•••••••••
• • ••
• • •
••••• • • •
• • •• •
• •
• • ••
• • • •
• •• •
••• ••••
 
  

  
  
   
   
 
  
   
  
 
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
• • • • ••••• ••••• • ••• • • • •
• • • • • • • • • • •• •• • •
••••• • • • •• • • • ••••• • • • •
• • • • • • • • • • • • • •
• • ••••• ••••• ••••• ••••• • • • • •
           
             
            
             
          
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
•••• •••• ••••• ••••• ••••• ••••• ••••• •••••
• • • • • • • • • • •
•••• •••• • • • •••• • • •••••
• • • • • • • • • •
• • • ••••• •• ••••• ••••• • •••••
       
          
        
         
        
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
------------------------------------------------------------
••• •••• ••••• •••• ••••• ••••• ••••• • • ••••• ••••• • • • • •
• • • • • • • • • • • • • • • • • •• ••
••••• •••• • • • •••• •••• • •• ••••• • • ••• • • • •
• • • • • • • • • • • • • • • • • • • •
• • •••• ••••• •••• ••••• • ••••• • • ••••• •• • • ••••• • •
• • ••••• •••• ••• •••• ••••• ••••• • • • • • • • • • • •••••
•• • • • • • • • • • • • • • • • • • • • • • •
• • • • • •••• • • •••• ••••• • • • • • • • • • •
• •• • • • • • • • • • • • • • • • • • • • •
• • ••••• • •• • • • ••••• • ••••• • • • • • • •••••
               
                  
                
                   
                
                  
                      
                   
                     
                 

Binary file not shown.

View File

@@ -1,532 +0,0 @@
<!DOCTYPE html>
<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">
<link href="./styles/reset.css" type="text/css" rel="stylesheet">
<link href="./styles/style.css" type="text/css" rel="stylesheet">
<link href="./styles/global.css" type="text/css" rel="stylesheet">
<link href="./styles/text.css" type="text/css" rel="stylesheet">
<link href="./styles/elements/mouses.css" type="text/css" rel="stylesheet">
<link href="./styles/elements/banners.css" type="text/css" rel="stylesheet">
<link href="./styles/elements/title.css" type="text/css" rel="stylesheet">
<link href="./styles/elements/nav.css" type="text/css" rel="stylesheet">
<link href="./styles/elements/sections.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>
<!--
original : • 8226 U+2022
:  57442 U+E062
:  57443 U+E063
:  57444 U+E064
:  57445 U+E065
actual :  57446 U+E066
:  57447 U+E067
-->
<body id="body">
<main id="top">
<!--
NAV
<nav>
<a href="#top">accueil</a>
<a href="#projects">projets</a>
<a href="#cv">cv</a>
<a href="#infos">contact</a>
</nav>
-->
<!--
HERO SECTION
-->
<section class="section hero" id="hero">
<header>
<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>
<h1 aria-label="programmeur informatique" id="title" class="title">
<span aria-hidden="true" class="pre">
             
                   
                 
                   
                
</span>
<span aria-hidden="true" class="pre">
              
                  
                  
                   
               
</span>
</h1>
</header>
<div class="frames_container mouse" id="mouse_1" role="img" aria-label="mouse animated in ASCII art">
<pre class="frame f1" aria-hidden="true">
  
     
      
         
      
    
    
    
     
        
        
     
     
   
   
</pre>
<pre class="frame f2" aria-hidden="true">
 
    
      
       
      
     
     
    
     
        
        
     
     
   
   
</pre>
<pre class="frame f3" aria-hidden="true">
 
    
      
       
      
     
     
    
     
        
        
     
     
   
   
</pre>
<pre class="frame f4" aria-hidden="true">
  
     
      
         
      
    
    
    
     
        
        
     
     
   
   
</pre>
</div>
<div class="banner banner_size_5 banner_speed_30" aria-label="banner delimitation in ASCII art"></div>
</section>
<!--
PROJECTS
-->
<section id="projects" class="section">
<header>
<h1 aria-label="projets">
<span aria-hidden="true" class="pre">
      
         
       
        
       
</span>
</h1>
</header>
<article>
<h2>projets réalisés</h2>
<figure class="project" id="ljdp">
<figcaption class="project_description">
<h3>extension wordpress :</h3><p>extension wordpress affichant les articles du site sur une carte, et permettant d'affiner la selection avec des critères</p>
<ul>
<li>lien du site : <a href="https://2022.lejourdesprofs.org/#programme" target="_blank" rel="noopener noreferrer" title="link to the webpage the running plugin"></a></li>
<li>lien du code : <a href="incomming" target="_blank" rel="noopener noreferrer" title="link to the source code of the plugin"></a></li>
<li>technologies : wordpress backend, php, javascript, html, css, google maps javascript API, google maps geocoding API, google maps markerclusterer</li>
</ul>
</figcaption>
<iframe
src="https://2022.lejourdesprofs.org/hugogogo/"
data-flex="center"
title="embedded plugin from it's original website"
sandbox="allow-scripts allow-popups"
></iframe>
</figure>
</article>
<div class="frames_container mouse" id="mouse_2" role="img" aria-label="mouse animated in ASCII art">
<pre class="frame f1" aria-hidden="true">
 
  
  
 

 
 
 
 
   
   
 
    
   
 
</pre>
<pre class="frame f2" aria-hidden="true">
 
  
  
 

 
 
 
 
   
   
 
    
   

</pre>
<pre class="frame f3" aria-hidden="true">
 
 
  
 

 
 
 
 
   
   
 
    
   
 
</pre>
<pre class="frame f4" aria-hidden="true">

 
  
 

 
 
 
 
   
   
 
    
   

</pre>
</div>
<div class="banner banner_size_3 banner_speed_20 banner_reverse" aria-label="banner delimitation in ASCII art"></div>
</section>
<!--
CV
-->
<section id="cv" class="section">
<header>
<h1 aria-label="cv" id="cv_ascii">
<span aria-hidden="true" class="pre">
  
  
  
  
 
</span>
</h1>
</header>
<article>
<h2 id="cv_download"><a href="downloads/hugo_lamy_2023_cv.pdf" target="_blank" rel="noopener noreferrer" title="link to a pdf version of this section CV">version pdf</a></h2>
<details>
<summary>
<h3>Outils informatiques</h3>
</summary>
<ul>
<li>Langages : C, HTML, CSS, C++, JavaScript, script bash, PHP, Svelte, TypeScript</li>
<li>Technologies : Git, Docker, Nginx, MariaDB, Node.js, Nest.js, WebSocket, Express, npm</li>
<li>Plus : emails, sending emails, receiving emails, deleting emails ("the it crowd", Jane Barber s01e01)</li>
</ul>
</details>
<details>
<summary>
<h3>Projets informatique</h3>
</summary>
<ul>
<li>Full-stack, reprise dun site dartistes en php, <a href="https://www.bloc-house.org" target="_blank" rel="noopener noreferrer" title="link to bloc-house website"></a>, 2021</li>
<li>Backend, plugin WordPress avec API Google Maps, <a href="https://2022.lejourdesprofs.org/#programme" target="_blank" rel="noopener noreferrer" title="link to lejourdesprofs website"></a>, 2022</li>
<li>Site vitrine, association Kosmopolit, <a href="https://kosmopolit.bitbucket.io" target="_blank" rel="noopener noreferrer" title="link to kosmopolit website"></a>, 2021</li>
</ul>
</details>
<details>
<summary>
<h3>Formations informatique</h3>
</summary>
<ul>
<li>École 42, Paris, 2021-2022, tronc commun - niveau 10 (C, C++, système, algorithime, réseaux)</li>
<li>SIMPLON, développeur full-stack JavaScript, 2018 (Javascript, Node.js, React.js, HTML, CSS)</li>
</ul>
</details>
<details>
<summary>
<h3>Bénévolat</h3>
</summary>
<ul>
<li>Formateur contraception testiculaire, ZEROMILLIONS, Paris, France, 2021-2023</li>
<li>Cogestion des bénévoles d'un camp de réfugiés, UTOPIA 56, Grande-Synthe, France, 2016</li>
<li>Distribution de nourriture (Migrants-Wilson & Secours Populaire)</li>
</ul>
</details>
<details>
<summary>
<h3>Études darchitecture</h3>
</summary>
<ul>
<li>Master 1, ENSAPM, ESA, ENSAV, île-de-france, France, 2008-2014</li>
<li>Stages : PERSPECTIVA (Houston, Texas, 2009), AS (Paris, 2012), JC QUINTON (Paris 2014)</li>
</ul>
</details>
<details>
<summary>
<h3>Centres d'intérêts</h3>
</summary>
<ul>
<li>Vélo : longs voyages à vélo, construction de vélos retro-directs</li>
<li>Magie : cartes, pièces, scène</li>
<li>Autonomie : recherche des moyens de vivre avec le minimum d'affaires</li>
</ul>
</details>
</article>
<div class="frames_container mouse" id="mouse_3" role="img" aria-label="mouse animated in ASCII art">
<pre class="frame f1" aria-hidden="true">
 
  

  
  
   
   
  
  
   
  
 
</pre>
<pre class="frame f2" aria-hidden="true">
 
  

  
  
   
   
 
  
   
  
 
</pre>
<pre class="frame f3" aria-hidden="true">
 
  

  
  
   
   
  
  
   
  
 
</pre>
<pre class="frame f4" aria-hidden="true">

  
 
  
   
  
  
   
   
   
   
 
</pre>
</div>
<div class="banner banner_size_3 banner_speed_50 banner_reverse" aria-label="banner delimitation in ASCII art"></div>
</section>
<!--
INFOS
-->
<section id="infos" class="footer section">
<article>
<p>hugogogo@protonmail.com</p>
</article>
<div class="frames_container mouse" id="mouse_4" role="img" aria-label="mouse animated in ASCII art">
<pre class="frame f1" aria-hidden="true">
 
 
   
     
     
   
   
  
   
  
 
</pre>
<pre class="frame f2" aria-hidden="true">
 
 
   
    
     
   
   
  
   
 
 
</pre>
<pre class="frame f3" aria-hidden="true">
 
  
   
    
     
   
   
  
   
 
 
</pre>
<pre class="frame f4" aria-hidden="true">
 
  
   
     
     
   
   
  
   
  
 
</pre>
</div>
<div class="banner">
</div>
</section>
</main>
</body>
</html>

25
index.php Normal file
View File

@@ -0,0 +1,25 @@
<!doctype html>
<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/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>
<body>
<?php include './src/body.php'; ?>
</body>
</html>

699
notes.md

File diff suppressed because one or more lines are too long

1789
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

19
package.json Normal file
View File

@@ -0,0 +1,19 @@
{
"name": "website_hugulumu",
"version": "1.0.0",
"description": "html validator : https://validator.w3.org/nu",
"main": "index.js",
"directories": {
"doc": "docs"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "php -S localhost:8000 & browser-sync start --proxy localhost:8000 --files \"**/*.php,**/*.css,**/*.js\" --port 3000"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"browser-sync": "^3.0.4"
}
}

56
src/body.php Normal file
View File

@@ -0,0 +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;
>* {
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;
}
}
</style>
<div>
<?php include 'modules/language.html'; ?>
<?php include 'modules/hero.html'; ?>
<?php include 'modules/cv.html'; ?>
<?php include 'modules/projects.html'; ?>
<?php include 'modules/infos.html'; ?>
</div>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -16,17 +16,18 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -16,20 +16,21 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -16,23 +16,24 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -16,25 +16,27 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -16,28 +16,30 @@
font-size: 1.5rem;
font-weight: normal;
font-style: normal;
white-space: pre;
/*
* dont work in chrome so use 'tspan' with 'dy' and 'xml:space'
*
line-height: 0.8;
white-space: pre;
*/
}
</style>
</defs>
<text x="0" y="0">
 
 
 
 
 
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
<tspan x="0" dy="0.8em" xml:space="preserve">  </tspan>
<tspan x="0" dy="0.8em" xml:space="preserve"></tspan>
</text>
<!-- Other SVG elements and attributes -->
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

5
src/docs/flags/fr.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
<path fill="#fff" d="M0 0h640v480H0z"/>
<path fill="#000091" d="M0 0h213.3v480H0z"/>
<path fill="#e1000f" d="M426.7 0H640v480H426.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 231 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
<path fill="#ffffff" d="M0 0h640v480H0z"/>
<path fill="#232323" d="M0 0h213.3v480H0z"/>
<path fill="#727272" d="M426.7 0H640v480H426.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 234 B

7
src/docs/flags/gb.svg Normal file
View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb" viewBox="0 0 640 480">
<path fill="#012169" d="M0 0h640v480H0z"/>
<path fill="#FFF" d="m75 0 244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0z"/>
<path fill="#C8102E" d="m424 281 216 159v40L369 281zm-184 20 6 35L54 480H0zM640 0v3L391 191l2-44L590 0zM0 0l239 176h-60L0 42z"/>
<path fill="#FFF" d="M241 0v480h160V0zM0 160v160h640V160z"/>
<path fill="#C8102E" d="M0 193v96h640v-96zM273 0v480h96V0z"/>
</svg>

After

Width:  |  Height:  |  Size: 504 B

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb" viewBox="0 0 640 480">
<path fill="#262626" d="M0 0h640v480H0z"/>
<path fill="#FFFFFF" d="m75 0 244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0z"/>
<path fill="#666666" d="m424 281 216 159v40L369 281zm-184 20 6 35L54 480H0zM640 0v3L391 191l2-44L590 0zM0 0l239 176h-60L0 42z"/>
<path fill="#FFFFFF" d="M241 0v480h160V0zM0 160v160h640V160z"/>
<path fill="#666666" d="M0 193v96h640v-96zM273 0v480h96V0z"/>
</svg>

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

381
src/modules/cv.html Normal file
View File

@@ -0,0 +1,381 @@
<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;
}
.dashed {
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">
<!--
CV DOWNLLOAD
-->
<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>
<!--
CV CONTENT
-->
<h2 class="dashed">
<span class="fr">COMPÉTENCES</span>
<span class="en">SKILLS</span>
</h2>
<ul class="dashed">
<li>
<span class="fr en">
<b>Langages :</b> C, C++, TypeScript, JavaScript, PHP, bash, CSS, HTML
</span>
</li>
<li>
<span class="fr en">
<b>Backend / Cloud :</b> Node.js, NestJS, Firebase Cloud Functions,
MongoDB, MySQL
</span>
</li>
<li>
<span class="fr">
<b>Embarqué / IoT :</b> Linux, Zephyr RTOS, optimisation mémoire
</span>
<span class="en">
<b>Embedded / IoT :</b> Linux, Zephyr RTOS, memory optimization
</span>
</li>
<li>
<span class="fr"> <b>Outils :</b> Git, Docker </span>
<span class="en"> <b>Tools :</b> Git, Docker </span>
</li>
<li>
<span class="fr en">
<b>Web :</b> WordPress, Svelte.js, React.js, Next.js
</span>
</li>
<li>
<span class="fr">
<b>Méthodes :</b> TDD, tests d'intégration, programmation
fonctionnelle
</span>
<span class="en">
<b>Practices :</b> TDD, integration testing, functional programming
</span>
</li>
<li>
<span class="fr">
<b>Langues :</b> Français (natif), Anglais (courant)
</span>
<span class="en">
<b>Languages :</b> French (native), English (fluent)
</span>
</li>
</ul>
<h2 class="dashed">
<span class="fr">EXPÉRIENCE</span>
<span class="en">EXPERIENCE</span>
</h2>
<ul class="dashed">
<li>
<span class="fr">
Developpeur Backend & Embarqué - OSKEY (2024-présent) oskey.io/
</span>
<span class="en">
Backend & Embedded Developer - OSKEY (2024-Present) oskey.io/
</span>
<ul>
<li>
<span class="fr">
Développement d'endpoints backend Firebase Cloud Functions en
TypeScript / NestJS pour la communication avec des appareils IoT
</span>
<span class="en">
Design of Firebase Cloud Functions backend APIs in TypeScript /
NestJS for communication with IoT devices
</span>
</li>
<li>
<span class="fr">
Refactorisation du backend existant (typage TypeScript strict,
correction d'erreurs, amélioration de la maintenabilité)
</span>
<span class="en">
Refactored existing backend (strict TypeScript typing, bug fixes,
maintainability improvements)
</span>
</li>
<li>
<span class="fr">
Développement d'helpers backend centralisant les contrôles
d'accès, la gestion des erreurs et l'accès aux données en base
</span>
<span class="en">
Development of backend helpers that centralize access controls,
error handling, and access to documents in the database
</span>
</li>
<li>
<span class="fr">
Optimisation de la gestion mémoire d'un firmware IoT en C sous
Zephyr RTOS
</span>
<span class="en">
Optimized memory usage of an IoT firmware written in C (Zephyr
RTOS) running on microcontrollers
</span>
</li>
<li>
<span class="fr">
Mise en place de tests d'intégration backend et firmware
</span>
<span class="en">
Implemented backend and firmware integration tests
</span>
</li>
</ul>
</li>
<li>
<span class="fr">
Developpeur Fullstack - FIPF (2024) carteprof.org/
</span>
<span class="en">
Fullstack Developer - FIPF (2024) carteprof.org/
</span>
<ul>
<li>
<span class="fr">
Développement d'un plugin WordPress (PHP / MySQL) pour la gestion
des paiements
</span>
<span class="en">
Developed a WordPress plugin (PHP / MySQL) for payment management
</span>
</li>
<li>
<span class="fr"> Audit et correction de plugins tiers </span>
<span class="en"> Audited and fixed third-party plugins </span>
</li>
<li>
<span class="fr"> Automatisation des flux de paiement </span>
<span class="en"> Automated payment workflows </span>
</li>
</ul>
</li>
<li>
<span class="fr">
Developpeur Front-End - KOSMOPOLIT (2023) kosmopolit/
</span>
<span class="en">
Front-End Developer - KOSMOPOLIT (2023) kosmopolit/
</span>
<ul>
<li>
<span class="fr">
Développement d'un site static multilingue (JavaScript, HTML/CSS)
</span>
<span class="en">
Developed a multilingual static website (JavaScript, HTML/CSS)
</span>
</li>
</ul>
</li>
</ul>
<h2 class="dashed">
<span class="fr">FORMATION</span>
<span class="en">EDUCATION</span>
</h2>
<ul class="dashed">
<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>
<h2 class="dashed">
<span class="fr">PROJETS</span>
<span class="en">PROJECTS</span>
</h2>
<ul class="dashed">
<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>
</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>

136
src/modules/hero.html Normal file
View File

@@ -0,0 +1,136 @@
<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>
<!-- 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 aria-label="programmeur informatique" id="title" class="title">
<span aria-hidden="true" class="pre">
<span class="fr">
            
                 
              
               
           
</span>
<span class="en">
         
             
           
            
         
</span>
</span>
</h1>
<p class="subtitle">
<span class="fr">
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>
<div
class="banner banner_size_3 banner_speed_30 grid_full_width"
aria-label="banner delimitation in ASCII art"
></div>
</section>

30
src/modules/infos.html Normal file
View 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
View 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: none;
}
#en {
display: inline;
}
}
&:checked + #language_label {
#fr {
display: inline;
}
#en {
display: none;
}
}
}
/*
* SWITCH LANGUAGE
*/
#language {
~ * .fr,
~ * .en {
display: none;
}
&:not(:checked) ~ * .fr {
display: inline;
}
&:checked ~ * .en {
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
View 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>

93
src/styles/banners.css Normal file
View File

@@ -0,0 +1,93 @@
.banner {
width: 100%;
--base_banner_height: 24px;
--banner_height: var(--base_banner_height); /*default*/
--base_dot_size: 4.2vw;
--dot_size: var(--base_dot_size); /*default*/
height: min(var(--dot_size), var(--banner_height));
background-image: url(../docs/banners/banner_1.svg); /*default*/
background-size: contain;
background-repeat: repeat;
background-position-x: 0%;
animation-duration: 10s; /*default*/
animation-name: slide_svg;
animation-iteration-count: infinite;
animation-timing-function: linear;
animation-direction: normal;
}
@keyframes slide_svg {
from {
background-position-x: 0%;
}
to {
background-position-x: 100%;
}
}
/*
* speeds
*
*/
.banner_pause {
animation-play-state: paused;
}
.banner_reverse {
animation-direction: reverse;
}
.banner_speed_10 {
animation-duration: 10s;
}
.banner_speed_20 {
animation-duration: 20s;
}
.banner_speed_30 {
animation-duration: 30s;
}
.banner_speed_40 {
animation-duration: 40s;
}
.banner_speed_50 {
animation-duration: 50s;
}
/*
* sizes
*
*/
.banner_size_0 {
background-image: url(../docs/banners/banner_0.svg);
--banner_height: calc(var(--base_banner_height) * 1);
--dot_size: calc(var(--base_dot_size) * 1);
}
.banner_size_00 {
background-image: url(../docs/banners/banner_00.svg);
--banner_height: calc(var(--base_banner_height) * 1);
--dot_size: calc(var(--base_dot_size) * 1);
}
.banner_size_1 {
background-image: url(../docs/banners/banner_1.svg);
--banner_height: calc(var(--base_banner_height) * 1);
--dot_size: calc(var(--base_dot_size) * 1);
}
.banner_size_2 {
background-image: url(../docs/banners/banner_2.svg);
--banner_height: calc(var(--base_banner_height) * 2);
--dot_size: calc(var(--base_dot_size) * 2);
}
.banner_size_3 {
background-image: url(../docs/banners/banner_3.svg);
--banner_height: calc(var(--base_banner_height) * 3);
--dot_size: calc(var(--base_dot_size) * 3);
}
.banner_size_4 {
background-image: url(../docs/banners/banner_4.svg);
--banner_height: calc(var(--base_banner_height) * 4);
--dot_size: calc(var(--base_dot_size) * 4);
}
.banner_size_5 {
background-image: url(../docs/banners/banner_5.svg);
--banner_height: calc(var(--base_banner_height) * 5);
--dot_size: calc(var(--base_dot_size) * 5);
}

25
src/styles/base.css Normal file
View 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 dont 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;
}
}

View File

Before

Width:  |  Height:  |  Size: 601 B

After

Width:  |  Height:  |  Size: 601 B

View File

Before

Width:  |  Height:  |  Size: 609 B

After

Width:  |  Height:  |  Size: 609 B

View File

Before

Width:  |  Height:  |  Size: 609 B

After

Width:  |  Height:  |  Size: 609 B

View File

Before

Width:  |  Height:  |  Size: 605 B

After

Width:  |  Height:  |  Size: 605 B

View File

Before

Width:  |  Height:  |  Size: 607 B

After

Width:  |  Height:  |  Size: 607 B

View File

Before

Width:  |  Height:  |  Size: 609 B

After

Width:  |  Height:  |  Size: 609 B

View File

Before

Width:  |  Height:  |  Size: 612 B

After

Width:  |  Height:  |  Size: 612 B

369
src/styles/mouses.css Normal file
View File

@@ -0,0 +1,369 @@
.mouse {
margin: auto;
width: fit-content;
overflow: hidden;
.frames {
position: relative;
animation: mouse_move infinite 2s normal steps(4);
&::before {
position: relative;
top: 0px;
left: 0px;
}
&::after {
position: absolute;
top: 100%;
left: 0px;
}
}
}
/*
* using 'transform' instead of 'top', because 'top' needs
* the parent to have an explicit height
* but in this case its height is according to the children
*
*/
@keyframes mouse_move {
0% {
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
";
}

47
src/styles/reset.css Normal file
View 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
View 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;
}

View File

@@ -1,76 +0,0 @@
.banner {
width: 100%;
--base_banner_height: 24px;
--banner_height: var(--base_banner_height); /*default*/
height: min(26vw, var(--banner_height));
background-image: url(../img/banner_1.svg); /*default*/
background-size: contain;
background-repeat: repeat;
background-position-x: 0%;
animation-duration: 10s; /*default*/
animation-name: slide_svg;
animation-iteration-count: infinite;
animation-timing-function: linear;
animation-direction: normal;
}
@keyframes slide_svg {
from {background-position-x: 0%;}
to {background-position-x: 100%;}
}
/*
* speeds
*
*/
.banner_pause {
animation-play-state: paused;
}
.banner_reverse {
animation-direction: reverse;
}
.banner_speed_10 {
animation-duration: 10s;
}
.banner_speed_20 {
animation-duration: 20s;
}
.banner_speed_30 {
animation-duration: 30s;
}
.banner_speed_40 {
animation-duration: 40s;
}
.banner_speed_50 {
animation-duration: 50s;
}
/*
* sizes
*
*/
.banner_size_1 {
background-image: url(../img/banner_1.svg);
--banner_height: calc(var(--base_banner_height) * 1);
}
.banner_size_2 {
background-image: url(../img/banner_2.svg);
--banner_height: calc(var(--base_banner_height) * 2);
}
.banner_size_3 {
background-image: url(../img/banner_3.svg);
--banner_height: calc(var(--base_banner_height) * 3);
}
.banner_size_4 {
background-image: url(../img/banner_4.svg);
--banner_height: calc(var(--base_banner_height) * 4);
}
.banner_size_5 {
background-image: url(../img/banner_5.svg);
--banner_height: calc(var(--base_banner_height) * 5);
}

View File

@@ -1,38 +0,0 @@
#cv {
/*
place-items: center;
place-self: stretch;
*/
grid-template-columns: 1fr minmax(auto, 900px) 1fr;
}
#cv header {
height: 300px;
}
#cv article {
/*
max-width: 900px;
*/
}
#cv article h2 {
text-align: center;
}
#cv #cv_ascii {
/*
place-self: center;
*/
}
#cv #cv_download {
/*
place-self: center;
*/
}
#cv details {
margin: 0px 0px 0px 25px;
}
#cv summary {
padding: 10px 0px;
}
#cv .mouse {
margin-top: 100px;
}

View File

@@ -1,16 +0,0 @@
#hero {
grid-template-rows: 1fr auto auto;
min-height: 100vh;
/*
grid-template-rows: 1fr 50px auto auto;
*/
}
#hero header {
padding-top: 50px;
}
#hero .mouse {
}
#hero .banner {
}

View File

@@ -1,7 +0,0 @@
#infos article {
display: flex;
flex-direction: column;
place-content: center;
height: 200px;
}

View File

@@ -1,53 +0,0 @@
.mouse {
position: relative;
margin: 20px 0px;
}
.frames_container {
display: grid;
grid-template-rows: 1fr;
width: fit-content;
}
pre.frame.hide {
display: none;
}
pre.frame {
position: relative;
justify-items: start;
align-items: end;
grid-column: 1;
grid-row: 1;
opacity: 0;
--tframes: 2s;
animation-name: ascii_frame;
animation-iteration-count: infinite;
animation-duration: var(--tframes);
animation-timing-function: steps(3);
animation-direction: normal;
}
pre.frame.f2 {animation-delay: calc(var(--tframes) * 25/100);}
pre.frame.f3 {animation-delay: calc(var(--tframes) * 50/100);}
pre.frame.f4 {animation-delay: calc(var(--tframes) * 75/100);}
@keyframes ascii_frame {
0% {opacity: 1;}
25% {opacity: 1;}
25.1% {opacity: 0;}
100% {opacity: 0;}
}
#mouse_1 {
place-self: center;
}
#mouse_2 {
left: 10%;
}
#mouse_3 {
left: 60%;
}
#mouse_4 {
left: 20%;
}

View File

@@ -1,30 +0,0 @@
nav {
display: flex;
flex-direction: row;
justify-content: center;
position: fixed;
top: 0;
background-color: #f6f6f6;
z-index: 1;
width: 100vw;
font-size: min(4vw, 1.5rem);
}
nav a {
position: relative;
padding: 10px min(5%, 20px);
height: fit-content;
text-decoration: none;
color: inherit;
}
nav a:before {
content: "•";
position: absolute;
left: 0px;
}
nav a:after {
content: "•";
position: absolute;
right: 0px;
}

View File

@@ -1,31 +0,0 @@
#projects header {
height: 300px;
}
#projects .project {
max-width: 900px;
display: flex;
flex-direction: column;
}
#projects article h2 {
text-align: center;
}
#projects .project_description {
padding: 20px 0px;
}
#projects #ljdp iframe {
height: 550px;
border: none;
overflow: hidden;
}
@media only screen and (min-width: 741px) {
#projects #ljdp iframe {
height: 660px;
}
}
#projects .project_description p {
margin: 0px 0px 10px 0px;
}
#projects .mouse {
margin-top: 100px;
}

View File

@@ -1,41 +0,0 @@
section header { grid-area: header; }
section article { grid-area: article; }
section .mouse { grid-area: mouse; }
section .banner { grid-area: banner; }
section {
display: grid;
margin: 0px;
width: 100vw;
grid:
' . header . ' auto
' . article . ' auto
' . mouse . ' auto
' banner banner banner ' auto
/ 1fr auto 1fr ;
grid-gap: 10px;
gap: 10px;
min-height: 100vh;
}
section header {
display: flex;
flex-direction: column;
place-content: center;
}
section footer {
display: flex;
flex-direction: column;
}
section header h1 {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
}
section .banner {
overflow-x: hidden;
}

View File

@@ -1,26 +0,0 @@
#name {
margin:30px 0px 20px 0px;
}
#title {
margin:20px 0px 20px 0px;
}
.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;
}
.title > *:first-child {
margin-bottom: 10px;
}

View File

@@ -1,92 +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) */
}
/*
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; }

View File

@@ -1,29 +0,0 @@
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;
}

View File

@@ -1,28 +0,0 @@
:root {
}
body, main {
overflow-x: clip;
margin: auto;
width: fit-content;
background-color: #f6f6f6;
}
script, style {
display: none;
}
pre {
margin: 10px 0px;
}
/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */
/* Animate scrolling only if users dont 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;
}
}

View File

@@ -1,73 +0,0 @@
@font-face {
font-family: "notomono";
src:
url("./fonts/notomono/NotoMono-Dot.woff") format("woff");
font-weight: normal;
font-style: normal;
}
html {
font-size: 62.5%;
}
body * {
font-family: "notomono", monospace;
font-size: 1.8rem;
font-weight: normal;
font-style: normal;
}
.pre, pre {
display: flex;
white-space: pre;
line-height: 0.8;
font-size: min(2.1vw, 1.0rem);
}
.pre_small {
font-size: min(1.5vw, 0.7rem);
}
/*
for screen larger than 500px
*/
@media screen and (min-width: 500px) {
body {
font-size: 1.5rem;
}
}
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;
}
details summary {
/*
list-style-position: inside;
*/
list-style-position: outside;
}
details summary {
font-size: 1.8rem;
list-style-type: "▸ ";
}
details[open] summary {
list-style-type: "▾ ";
}
a:empty::after {
content: attr(href);
}
h1 { margin: 30px 0px; font-size: 2.25rem; }
h2 { margin: 30px 0px; font-size: 2.0rem; }
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: 1.0rem; }