Use standardized data
@@ -1,3 +1,23 @@
+# 5ika.ch +## Generate blog + +**Local files must match following structure:** + +- `./home` (ssh://5ika.ch:1917/home) +- `./weblogg` (ssh://5ika.ch:1917/weblogg) +- `./writing` (ssh://5ika.ch:1917/writing) + +1. Write some content in `writing/published` +2. Go to `weblogg` and generate data and feeds with `deno run --unstable -A mod.ts` +3. Go to `home` and generate posts from JSON-LD with `yarn build` + +## ToDo + +- [ ] Use Tailwind through Deno to avoid node_modules +- [ ] Merge `weblogg` and `home` +- [ ] Adapt git hook on server to deploy on each push + + ## Inspiration https://www.ecliptik.com/
@@ -1,60 +0,0 @@
-const fs = require("fs"); -const path = require("path"); -const marked = require("marked"); - -const SITE_TITLE = "Tim Izzo @5ika.ch"; -const INPUT_PATH = "./pages"; -const OUTPUT_PATH = "./build"; - -const template = fs.readFileSync("src/template.html", "utf-8"); - -marked.use({ - renderer: { - link(href, title, text) { - const isExternal = href?.startsWith("http"); - return `<a href='${href}' target='${ - isExternal ? "_blank" : "" - }' title='${title}'>${text}</a>`; - }, - }, -}); - -const convertItem = path => { - const item = fs.lstatSync(path); - - if (item.isDirectory()) { - const subItems = fs.readdirSync(path); - subItems.forEach(subPath => convertItem(`${path}/${subPath}`)); - } else { - convertFile(path); - } -}; - -const convertFile = filePath => { - const mdContent = fs.readFileSync(filePath, "utf-8"); - const htmlContent = applyTemplate(marked.parse(mdContent)); - const outputPath = filePath - .replace(INPUT_PATH, OUTPUT_PATH) - .replace(".md", ".html"); - console.log(`Convert file ${filePath} to ${outputPath}`); - ensureDirectoryExistence(outputPath); - fs.writeFileSync(outputPath, htmlContent); -}; - -const ensureDirectoryExistence = filePath => { - const dirname = path.dirname(filePath); - if (fs.existsSync(dirname)) return true; - ensureDirectoryExistence(dirname); - fs.mkdirSync(dirname); -}; - -const applyTemplate = content => { - const firstH1 = getFirstH1(content); - const title = firstH1 ? `${firstH1} - ${SITE_TITLE}` : SITE_TITLE; - return template.replace("$CONTENT", content).replace("$TITLE", title); -}; - -const getFirstH1 = htmlContent => - htmlContent.match(/\<h1 .*\>(.*)\<\/h1\>/)?.[1]; - -convertItem(INPUT_PATH);
@@ -0,0 +1,33 @@
+const fs = require("fs"); + +const SRC_DIR = "src"; +const BUILD_DIR = "build"; + +const template = fs.readFileSync(`${SRC_DIR}/template.html`, "utf-8"); +const indexPageTemplate = fs.readFileSync(`${SRC_DIR}/index.html`, "utf-8"); +const jsonLdRaw = fs.readFileSync(`${BUILD_DIR}/posts/ld.json`, "utf-8"); +const jsonLd = JSON.parse(jsonLdRaw); + +// Generate HTML post pages +for (const item of jsonLd.items) { + const htmlContent = template + .replace("$CONTENT", item.content) + .replace("$TITLE", item.name); + const pagePath = `${BUILD_DIR}/posts/${item["@id"]}.html`; + fs.writeFileSync(pagePath, htmlContent); + console.log(`Post generated: ${pagePath}`); +} + +// Set posts list in index.html +const postsList = jsonLd.items + .sort((itemA, itemB) => new Date(itemB.published) - new Date(itemA.published)) + .map(item => { + const date = new Date(item.published).toLocaleDateString(); + return `<li><a href="/posts/${item["@id"]}.html">${date} - ${item.name}</a></li>`; + }); +const indexPage = indexPageTemplate.replace( + "$POSTS_LIST", + postsList.join("\n") +); +fs.writeFileSync(`${BUILD_DIR}/index.html`, indexPage); +console.log(`Index page written to ${BUILD_DIR}/index.html`);
@@ -0,0 +1,9 @@
+#!/bin/bash + +rm -r build +mkdir -p build/posts + +cp ../weblogg/build/* build/posts +node bin/generate-posts.js + +yarn tw
@@ -8,43 +8,121 @@ rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" /> <link href="/style.css" rel="stylesheet" /> + <link + href="/posts/atom-html.xml" + type="application/atom+xml" + rel="alternate" + title="5ika's posts" + /> + <link + href="/posts/rss-html.xml" + type="application/rss+xml" + rel="alternate" + title="5ika's posts" + /> <title>Tim Izzo @5ika.ch</title> </head> <body> <main> <h1 class="mb-8">Tim Izzo @<a href="/">5ika.ch</a></h1> <blockquote> -<p>Dev & Ops đ§âđ» Open-Source đ Ăcologie đ± SobriĂ©tĂ© numĂ©rique âš</p> -</blockquote> -<p>Partisan d'un Internet ouvert, sobre et distribuĂ©, je dĂ©veloppe et met en place des outils digitaux par mon activitĂ© d'indĂ©pendant ainsi qu'au travers de l'entreprise auto-gouvernĂ©e <a href='https://octree.ch' target='_blank' title='null'>Octree</a>. En parallĂšle, j'enseigne le mĂ©tier de dĂ©veloppeur/euse Ă <a href='https://www.creageneve.com/bachelor/developpement-web-et-applications/' target='_blank' title='null'>CREA GenĂšve</a>.</p> -<h2 id="blog">Blog</h2> -<ul> -<li><a href='./posts/quitter-le-pave.html' target='' title='null'>20.10.2022 - Quitter le pavĂ©</a></li> -<li><a href='./posts/confort-et-stabilite.html' target='' title='null'>19.09.2022 - Confort et stabilitĂ©</a></li> -<li><a href='./posts/deconnexion.html' target='' title='null'>18.05.2022 - DĂ©connexion</a></li> -<li><a href='./posts/pour-un-web-sain.html' target='' title='null'>19.03.2022 - Pour un Web sain</a></li> -<li><a href='./posts/vers-l-internet-de-demain.html' target='' title='null'>13.11.2021 - Vers l'Internet de demain</a></li> -</ul> -<h2 id="projets">Projets</h2> -<ul> -<li>đ <a href='https://caroster.io/' target='_blank' title='null'>Caroster</a> <small>[Octree]</small></li> -<li>â»ïž <a href='https://r-21.ch' target='_blank' title='null'>R-21</a> <small>[Octree]</small></li> -<li>đą <a href='https://evospe.ch' target='_blank' title='null'>EVOSPE</a> <small>[Octree]</small></li> -<li>đłïž <a href='https://www.demaincestaujourdhui.online/' target='_blank' title='null'>Civic Echo</a> <small>[Octree]</small></li> -<li>đ <a href='https://open-ge.ch/' target='_blank' title='null'>GenĂšve Open-Source</a></li> -<li>đ <a href='https://github.com/5ika/denotion' target='_blank' title='null'>Denotion</a></li> -<li>đ <a href='https://github.com/5ika/tipigee' target='_blank' title='null'>tipigee</a> <small><em>inactif</em></small></li> -</ul> -<h2 id="talk">Talk</h2> -<ul> -<li><a href='https://www.youtube.com/watch?v=2_Cx-HvxVX0' target='_blank' title='null'>21.02.2019 - Holacracy & Devops, Retour d'expeÌrience</a></li> -</ul> -<h2 id="contact">Contact</h2> -<ul> -<li>âïž <a href='mailto:tim@5ika.ch' target='' title='null'>tim@5ika.ch</a></li> -<li>đ <a href='https://fosstodon.org/web/@5ika' target='_blank' title='null'>Mastodon</a></li> -</ul> - + <p>Dev & Ops đ§âđ» Open-Source đ Ăcologie đ± SobriĂ©tĂ© numĂ©rique âš</p> + </blockquote> + <p> + Partisan d'un Internet ouvert, sobre et distribuĂ©, je dĂ©veloppe et + met en place des outils digitaux par mon activitĂ© d'indĂ©pendant + ainsi qu'au travers de l'entreprise auto-gouvernĂ©e + <a href="https://octree.ch" target="_blank" title="null">Octree</a>. En + parallĂšle, j'enseigne le mĂ©tier de dĂ©veloppeur/euse Ă + <a + href="https://www.creageneve.com/bachelor/developpement-web-et-applications/" + target="_blank" + title="null" + >CREA GenĂšve</a + >. + </p> + <h2 id="blog">Blog</h2> + <ul> + <li><a href="/posts/quitter-le-pave.html">20.10.2022 - Quitter le pavĂ©</a></li> +<li><a href="/posts/confort-et-stabilite.html">19.09.2022 - Confort et stabilitĂ©</a></li> +<li><a href="/posts/deconnexion.html">18.05.2022 - DĂ©connexion</a></li> +<li><a href="/posts/pour-un-web-sain.html">19.03.2022 - Pour un Web sain</a></li> +<li><a href="/posts/vers-linternet-de-demain.html">13.11.2021 - Vers l'Internet de demain</a></li> + </ul> + <h2 id="projets">Projets</h2> + <ul> + <li> + đ + <a href="https://caroster.io/" target="_blank" title="null" + >Caroster</a + > + <small>[Octree]</small> + </li> + <li> + â»ïž <a href="https://r-21.ch" target="_blank" title="null">R-21</a> + <small>[Octree]</small> + </li> + <li> + đą + <a href="https://evospe.ch" target="_blank" title="null">EVOSPE</a> + <small>[Octree]</small> + </li> + <li> + đłïž + <a + href="https://www.demaincestaujourdhui.online/" + target="_blank" + title="null" + >Civic Echo</a + > + <small>[Octree]</small> + </li> + <li> + đ + <a href="https://open-ge.ch/" target="_blank" title="null" + >GenĂšve Open-Source</a + > + </li> + <li> + đ + <a + href="https://github.com/5ika/denotion" + target="_blank" + title="null" + >Denotion</a + > + </li> + <li> + đ + <a href="https://github.com/5ika/tipigee" target="_blank" title="null" + >tipigee</a + > + <small><em>inactif</em></small> + </li> + </ul> + <h2 id="talk">Talk</h2> + <ul> + <li> + <a + href="https://www.youtube.com/watch?v=2_Cx-HvxVX0" + target="_blank" + title="null" + >21.02.2019 - Holacracy & Devops, Retour d'expeÌrience</a + > + </li> + </ul> + <h2 id="contact">Contact</h2> + <ul> + <li> + âïž <a href="mailto:tim@5ika.ch" target="" title="null">tim@5ika.ch</a> + </li> + <li> + đ + <a href="https://fosstodon.org/web/@5ika" target="_blank" title="null" + >Mastodon</a + > + </li> + </ul> </main> </body> </html>
@@ -8,27 +8,39 @@ rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" /> <link href="/style.css" rel="stylesheet" /> - <title>Confort et stabilitĂ© - Tim Izzo @5ika.ch</title> + <link + href="/posts/atom-html.xml" + type="application/atom+xml" + rel="alternate" + title="5ika's posts" + /> + <link + href="/posts/rss-html.xml" + type="application/rss+xml" + rel="alternate" + title="5ika's posts" + /> + <title>Confort et stabilitĂ©</title> </head> <body> <main> <h1 class="mb-8">Tim Izzo @<a href="/">5ika.ch</a></h1> - <h1 id="confort-et-stabilitĂ©">Confort et stabilitĂ©</h1> + <h1>Confort et stabilitĂ©</h1> <blockquote> -<p>19.09.22</p> +<p>19.09.2022</p> </blockquote> -<p>Ă 25 ans, jâai eu la chance de rejoindre une Ă©quipe de 5 personnes avec qui jâai montĂ© une entreprise de dĂ©veloppement informatique. En se basant sur une courte expĂ©rience de lancement dâapplication ratĂ©, nous avons dĂ©cidĂ© que nous voulions profiter du caractĂšre multi-compĂ©tent de notre Ă©quipe pour gagner nos vies. Câest donc en aoĂ»t 2016 que nous avons lancĂ© <a href='https://octree.ch' target='_blank' title='null'>Octree</a>, Ă lâorigine une boĂźte de dĂ©veloppement de sites Web sur mesure.</p> +<p>Ă 25 ans, jâai eu la chance de rejoindre une Ă©quipe de 5 personnes avec qui jâai montĂ© une entreprise de dĂ©veloppement informatique. En se basant sur une courte expĂ©rience de lancement dâapplication ratĂ©, nous avons dĂ©cidĂ© que nous voulions profiter du caractĂšre multi-compĂ©tent de notre Ă©quipe pour gagner nos vies. Câest donc en aoĂ»t 2016 que nous avons lancĂ© <a href="https://octree.ch">Octree</a>, Ă lâorigine une boĂźte de dĂ©veloppement de sites Web sur mesure.</p> <p>Ătant toujours en Master, jâai vu lĂ une maniĂšre douce dâattaquer le monde du travail. Le fait de travailler dans ma propre entreprise mâa toujours sĂ©duit sans trop savoir pourquoi, probablement Ă cause du semblant de facilitĂ© que cela montre: pas de patron, pas besoin de chercher un job, grande libertĂ©, possibilitĂ© de sâenrichir rapidement sans trop dâeffort si les choses marchent. Ăvidemment, a posteriori, jâai bien eu le temps de me rendre compte que tout ça nâĂ©tait que des apparences.</p> <p>AprĂšs 3 ans de recherche de croissance et de stabilitĂ©, Octree a subi une grosse crise et perdu beaucoup de plumes. Nous sommes passĂ©s de 10 personnes Ă 4, tous Ă des taux de travail partiels pour pouvoir maintenir la boĂźte sous assistance respiratoire.</p> <p>De mon cĂŽtĂ©, jâai dĂ©butĂ© mon activitĂ© dâindĂ©pendant dĂ©but 2020, en plein Covid. LâidĂ©e Ă©tait de pouvoir appliquer lâensemble de mes compĂ©tences techniques. MĂȘme si je peux dire aujourdâhui que cela fonctionne, jâai clairement nĂ©gligĂ© les capacitĂ©s nĂ©cessaires en matiĂšre de prospection.</p> <p>CĂŽtĂ© Octree, la crise a Ă©tĂ© rĂ©vĂ©latrice et a lancĂ© beaucoup de questions: avec qui nous voulons collaborer ? Pour quels clients ? Que dĂ©fendons-nous ? Qui sommes-nous ? Quel avenir pour la boĂźte ?</p> -<p>Notre gouvernance en <a href='https://fr.wikipedia.org/wiki/Holacratie' target='_blank' title='null'>Holacracy</a>, fraĂźchement instaurĂ©e juste avant la crise, nous a apportĂ© les clĂ©s pour avancer sur ces questions. Le passage Ă lâHolacracy nous a amenĂ© Ă nous fixer une <em>raison dâĂȘtre</em>, câest-Ă -dire une formulation concrĂšte de ce que nous souhaitons atteindre, le pourquoi de notre travail. Ă quatre, nous avons pris cela plus au sĂ©rieux quâalors et avons Ă©tabli la raison dâĂȘtre suivante, qui nous guide toujours: <em>CrĂ©er un cercle vertueux entre la sociĂ©tĂ© et la technologie au profit de lâHumain</em>.</p> +<p>Notre gouvernance en <a href="https://fr.wikipedia.org/wiki/Holacratie">Holacracy</a>, fraĂźchement instaurĂ©e juste avant la crise, nous a apportĂ© les clĂ©s pour avancer sur ces questions. Le passage Ă lâHolacracy nous a amenĂ© Ă nous fixer une <em>raison dâĂȘtre</em>, câest-Ă -dire une formulation concrĂšte de ce que nous souhaitons poursuivre, le pourquoi de notre travail. Ă quatre, nous avons pris cela plus au sĂ©rieux quâalors et avons Ă©tabli la raison dâĂȘtre suivante, qui nous guide toujours: <em>CrĂ©er un cercle vertueux entre la sociĂ©tĂ© et la technologie au profit de lâHumain</em>.</p> <p>PoussĂ©s par cette raison dâĂȘtre, nous avons ainsi passĂ© 3 ans Ă reconstruire Octree pas aprĂšs pas. Lentement mais sĂ»rement. Nous avons engagĂ© des personnes en phase avec notre culture dâentreprise de plus en plus affirmĂ©e et nous avons embrassĂ© pleinement lâHolacracy et son potentiel.</p> -<p>Aujourdâhui, les projets que nous dĂ©veloppons nâont rien Ă voir avec ceux des dĂ©buts. Nous travaillons avec des entitĂ©s publiques comme lâ<a href='https://participer.ge.ch/' target='_blank' title='null'>Ătat de GenĂšve</a>, la <a href='https://participer.lausanne.ch/' target='_blank' title='null'>ville de Lausanne</a>. Nous accompagnons des communes et des entreprises genevoises vers la transition numĂ©rique avec <a href='https://r-21.ch/' target='_blank' title='null'>R-21</a> et poussons nos propres applications comme <a href='https://caroster.io/' target='_blank' title='null'>Caroster</a>.</p> +<p>Aujourdâhui, les projets que nous dĂ©veloppons nâont rien Ă voir avec ceux des dĂ©buts. Nous travaillons avec des entitĂ©s publiques comme lâ<a href="https://participer.ge.ch/">Ătat de GenĂšve</a>, la <a href="https://participer.lausanne.ch/">ville de Lausanne</a>. Nous accompagnons des communes et des entreprises genevoises vers la transition numĂ©rique avec <a href="https://r-21.ch/">R-21</a> et poussons nos propres applications comme <a href="https://caroster.io/">Caroster</a>.</p> <p>Nous sommes fiers de ce que nous faisons et de part les choix que lâĂ©quipe dâOctree a fait ces derniĂšres annĂ©es, nous nous sommes distinguĂ©s des entreprises conventionnelles:</p> <ul> <li>Tout le monde touche le mĂȘme salaire (proportionnellement au taux de travail de chacun). Ce salaire est augmentĂ© progressivement avec le dĂ©veloppement de lâentreprise.</li> -<li>Nous sommes une sĂ rl Ă but non lucratif. Octree fait notamment partie du <a href='https://www.apres-ge.ch/' target='_blank' title='null'>rĂ©seau de lâĂ©conomie sociale et solidaire</a>.</li> +<li>Nous sommes une sĂ rl Ă but non lucratif. Octree fait notamment partie du <a href="https://www.apres-ge.ch/">rĂ©seau de lâĂ©conomie sociale et solidaire</a>.</li> <li>Personne ne travail Ă 100%. On a donc tous du temps Ă cĂŽtĂ© pour faire autre chose ou vivre, tout simplement.</li> <li>Nous ne souhaitons pas devenir une grosse entreprise. 15 personnes semblent ĂȘtre un maximum avant de scinder la boĂźte.</li> <li>La confiance et la communication plutĂŽt que la peur et lâautoritĂ©.</li>@@ -38,16 +50,15 @@ <ul>
<li>Avec un Master HES dans le domaine de lâIT, le salaire moyen en Suisse est deux fois plus grand que ce que je touche aujourdâhui en prenant en compte mon activitĂ© chez Octree, mes projets indĂ©pendants et les cours que je donne chez CREA.</li> <li>Il y a toujours une partie de mon cerveau dans un ou plusieurs projets en cours. La sĂ©paration entre le privĂ©e et le pro est fine, voire inexistante sur certaines pĂ©riodes. Pour quelquâun qui peine Ă gĂ©rer son stress comme moi, cela demande une autre forme de travail plus personnel.</li> <li>Le fait dâĂȘtre une trĂšs petite entreprise implique de lâinstabilitĂ©. Par exemple, un gros projet annulĂ© peut avoir un impact fort sur la santĂ© de la boĂźte.</li> -<li>Il nâest pas possible de gĂ©rer âjuste son pâtit culâ. En plus de son travail quotidien propre au mĂ©tier, il faut parfois prendre la casquette de facilitateur, de secrĂ©taire, de RH, de mĂ©diateur, dâadministrateur, d'accompagnateur. Personne ne peux imposer de dĂ©cision aux autres et personne ne peut ĂȘtre virĂ©.</li> +<li>Il nâest pas possible de gĂ©rer âjuste son pâtit culâ. En plus de son travail quotidien propre au mĂ©tier, il faut parfois prendre la casquette de facilitateur, de secrĂ©taire, de RH, de mĂ©diateur, dâadministrateur, d'accompagnateur. Personne ne peux imposer de dĂ©cision aux autres et personne ne peut ĂȘtre virĂ©.</li> </ul> -<p>Ainsi, rĂ©guliĂšrement jâen reviens Ă me poser ces questions: Est-ce que câest ce que je veux ? Est-ce que je nâaspire pas Ă plus de stabilitĂ© et de confort financier ? Est-ce que le choix de la facilitĂ© nâest pas finalement le bon choix ?</p> +<p>Ainsi, rĂ©guliĂšrement jâen reviens Ă me poser ces questions: Est-ce que câest ce que je veux ? Est-ce que je nâaspire pas Ă plus de stabilitĂ© et de confort financiĂ© ? Est-ce que le choix de la facilitĂ© nâest pas finalement le bon choix ?</p> <p>Ă chaque fois, la rĂ©ponse est aisĂ©e: Non.</p> <p>Non car le salaire nâest quâune partie de ce que lâentreprise offre Ă ses employĂ©-e-s. Octree, comme les autres boĂźtes auto-gouvernĂ©es, offre tout un panel de choses qui ne seraient pas possibles dans une entreprise conventionnelle: je fais un travail qui a du sens, je prends moi-mĂȘme les dĂ©cisions qui concernent mon travail, jâai la possibilitĂ© dâadapter ma place au sein de lâentreprise, je peux voir les effets de mon travail et jâen rĂ©cupĂšre les fruits de maniĂšre Ă©quitable. Je travail avec des personnes passionnĂ©es, qui veulent sâimpliquer et en qui jâai confiance.</p> <p>Non car mĂȘme si je cogite continuellement sur des projets, câest avant tout parce que je suis passionnĂ© par ce que je fais et jâai du plaisir Ă rĂ©flĂ©chir quand mes pensĂ©es sont maĂźtrisĂ©es. Je cherche constamment comment amĂ©liorer les choses, les processus, le code, la qualitĂ© du produit, etc..</p> <p>Non car nous dĂ©veloppons des projets qui ont du sens et qui rĂ©pondent Ă un besoin rĂ©el plutĂŽt quâĂ vendre et faire du chiffre. Si un produit est pertinent et est dĂ©veloppĂ© correctement, il peut devenir un vrai outil et a peu de chance dâĂȘtre avortĂ©.</p> <p>Non car je crois Ă la puissance de la communication et de la confiance. Dans les entreprises conventionnelles, si vous ne faites pas du bon travail ou si vous ne faites pas vos 8h par jour, vous pouvez ĂȘtre virĂ©. Quand votre supĂ©rieur-e vous demande quelque chose, vous devez le faire, mĂȘme si vous trouvez cela stupide ou nâĂȘtes pas dâaccord. On vous engage pour un job fixe correspondant Ă un cahier des charges et vous ĂȘtes cadrĂ©s dans ce que vous pouvez apporter Ă lâentreprise et ce quâelle peut vous donner en retour. Vous voulez faire plus ? Vous voulez faire mieux ? Non, vous remplissez votre cahier des charges ou vous partez.</p> <p>Renoncer aux quatre points Ă©voquĂ©s plus haut nâest pas un problĂšme car il y a bien plus Ă gagner. Les obligations de la vie et la pression sociale me ramĂšnent toujours Ă ce choix et câest avec fiertĂ© que je continue Ă crĂ©er les choses plutĂŽt quâĂ les subir.</p> - </main> </body> </html>
@@ -8,12 +8,24 @@ rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" /> <link href="/style.css" rel="stylesheet" /> - <title>DĂ©connexion - Tim Izzo @5ika.ch</title> + <link + href="/posts/atom-html.xml" + type="application/atom+xml" + rel="alternate" + title="5ika's posts" + /> + <link + href="/posts/rss-html.xml" + type="application/rss+xml" + rel="alternate" + title="5ika's posts" + /> + <title>DĂ©connexion</title> </head> <body> <main> <h1 class="mb-8">Tim Izzo @<a href="/">5ika.ch</a></h1> - <h1 id="dĂ©connexion">DĂ©connexion</h1> + <h1>DĂ©connexion</h1> <blockquote> <p>18.05.2022</p> </blockquote>@@ -30,7 +42,6 @@ <p>Cela reste difficile dâĂȘtre dĂ©connectĂ© des diffĂ©rentes plateformes. En arrĂȘtant les rĂ©seaux dââamisâ, jâai un peu compensĂ© avec LinkedIn pendant quelque temps. MĂȘme si je suis encore un peu prĂ©sent sur ce rĂ©seau professionnel, jâai remarquĂ© que je nâai rien Ă y partager (je ne fais que repartager ce que postent les entitĂ©s dont je fais partie mais le monde peut sâen passer) et que les quelques rares informations intĂ©ressantes sont perdues dans un ocĂ©an dâinformation inutile et de marketing.</p>
<p>Finalement, tout ce que je peux trouver dâintĂ©ressant sur ces rĂ©seaux se trouve aussi ailleurs sur le Web et je prĂ©fĂšre dĂ©sormais utiliser un agrĂ©gateur qui me condense les publications des sites que je suis sans le superflu autour.</p> <p>Je ne passe plus mes journĂ©es Ă scroller dans la vie des autres mais jâai dĂ©sormais tout le temps de rĂ©flĂ©chir et de me concentrer sur des choses qui valent la peine, les choses de la vraie vie, celle qui est palpable.</p> <p>La dĂ©connexion nâa pas Ă©tĂ© simple et la tentation de revenir sur les plateformes sociales, les anciennes comme les nouvelles, ne part pas vraiment. Mais quand on rĂ©ussit Ă construire de vraies relations, il devient Ă©vident quâon nâa pas besoin de Facebook, Instagram, TikTok et leurs compĂšres.</p> - </main> </body> </html>
@@ -8,12 +8,24 @@ rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" /> <link href="/style.css" rel="stylesheet" /> - <title>Pour un Web sain - Tim Izzo @5ika.ch</title> + <link + href="/posts/atom-html.xml" + type="application/atom+xml" + rel="alternate" + title="5ika's posts" + /> + <link + href="/posts/rss-html.xml" + type="application/rss+xml" + rel="alternate" + title="5ika's posts" + /> + <title>Pour un Web sain</title> </head> <body> <main> <h1 class="mb-8">Tim Izzo @<a href="/">5ika.ch</a></h1> - <h1 id="pour-un-web-sain">Pour un Web sain</h1> + <h1>Pour un Web sain</h1> <blockquote> <p>19.03.2022</p> </blockquote>@@ -30,7 +42,6 @@ <p>CâĂ©tait une Ăšre oĂč le Web Ă©tait simple. On voyait quelques sites extravagants pleins de couleurs mais les informations quâon trouvait Ă©taient rĂ©flĂ©chies et facile dâaccĂšs. Il nâĂ©tait pas nĂ©cessaire dâen mettre plein la vue avec des animations et des contenus de remplissage optimisĂ©s pour le SEO.</p>
<p>Pourtant, ce qui faisait le Web dâhier nâa pas disparu. Les technologies sont toujours lĂ et ont peu voir pas changĂ©es (HTML, HTTP,...). Nous avons juste rajoutĂ© des couches de merdes dessus pour mieux sucer les esprits et faire du business.</p> <p>Car oui, quand nous utilisons le Web moderne, nous permettons Ă des entreprises de sâenrichir. Et cela mĂȘme si nous ne dĂ©boursons pas un sou. <em>Si câest gratuit, câest toi le produit.</em> Ce nâest pas grĂące Ă des dons que Facebook et Google font partie des boites les plus riches et puissantes de la planĂšte.</p> <p>Je ne crois pas quâil soit envisageable de retourner au Web des dĂ©buts mais il est possible nĂ©anmoins, de maniĂšre individuelle, de changer la maniĂšre dont on sâen sert pour revenir Ă une utilisation saine, respectueuse de soi-mĂȘme et des autres humains. Câest le chemin que je souhaite raconter Ă travers ce blog.</p> - </main> </body> </html>
@@ -8,58 +8,69 @@ rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" /> <link href="/style.css" rel="stylesheet" /> - <title>Quitter le pavĂ© - Tim Izzo @5ika.ch</title> + <link + href="/posts/atom-html.xml" + type="application/atom+xml" + rel="alternate" + title="5ika's posts" + /> + <link + href="/posts/rss-html.xml" + type="application/rss+xml" + rel="alternate" + title="5ika's posts" + /> + <title>Quitter le pavĂ©</title> </head> <body> <main> <h1 class="mb-8">Tim Izzo @<a href="/">5ika.ch</a></h1> - <h1 id="quitter-le-pavĂ©">Quitter le pavĂ©</h1> + <h1>Quitter le pavĂ©</h1> <blockquote> <p>20.10.2022</p> </blockquote> <p>Depuis que je me rends compte des dĂ©rives du Web et des gros problĂšmes concernant la -consommation d'Ă©nergie de nos outils numĂ©riques ainsi que leurs effets sur notre mode de vie, -je cherche comment m'extirper du Big Web (Google, Facebook, Linkedin, Twitter,...). -J'essaye rĂ©guliĂšrement des technologies alternatives mais il n'est pas Ă©vident de sauter le pas et de changer ses habitudes -d'utilisation d'Internet.</p> -<p>Il y a 4 ans, dans un Ă©lan de <a href='https://www.calnewport.com/books/digital-minimalism/' target='_blank' title='null'>digital minimalism</a>, j'ai retirĂ© +consommation d'Ă©nergie de nos outils numĂ©riques ainsi que leurs effets sur notre mode de vie, +je cherche comment m'extirper du Big Web (Google, Facebook, Linkedin, Twitter,...). +J'essaye rĂ©guliĂšrement des technologies alternatives mais il n'est pas Ă©vident de sauter le pas et de changer ses habitudes +d'utilisation d'Internet.</p> +<p>Il y a 4 ans, dans un Ă©lan de <a href="https://www.calnewport.com/books/digital-minimalism/">digital minimalism</a>, j'ai retirĂ© de mon smartphone <strong>tout ce qui a un scroll infini</strong>. Ciao Facebook, Instagram et Twitter. -L'objectif Ă©tait de retrouver un tĂ©lĂ©phone <em>outil</em> plutĂŽt qu'un tĂ©lĂ©phone <em>passe-temps</em>. -Et cette rĂšgle d'or tient toujours pour moi aujourd'hui. -J'ai gagnĂ© Ă©normĂ©ment de temps, de focus et de journĂ©es de batterie (de maniĂšre non nĂ©gligeable).</p> -<p>J'ai ensuite remplacĂ© les apps "qui se scroll" par <a href='https://feedly.com/' target='_blank' title='null'>Feedly</a> et <a href='https://getpocket.com/' target='_blank' title='null'>Pocket</a>.</p> -<p>Le premier me permet de suivre des fils d'information sĂ©lectionnĂ©s avec soin. -Dans ma liste des "feeds", j'ajoute les sites d'information que je consultait avant un par un ainsi que -plusieurs blogs techniques que j'apprĂ©cie. +L'objectif Ă©tait de retrouver un tĂ©lĂ©phone <em>outil</em> plutĂŽt qu'un tĂ©lĂ©phone <em>passe-temps</em>. +Et cette rĂšgle d'or tient toujours pour moi aujourd'hui. +J'ai gagnĂ© Ă©normĂ©ment de temps, de focus et de journĂ©es de batterie (de maniĂšre non nĂ©gligeable).</p> +<p>J'ai ensuite remplacĂ© les apps "qui se scroll" par <a href="https://feedly.com/">Feedly</a> et <a href="https://getpocket.com/">Pocket</a>.</p> +<p>Le premier me permet de suivre des fils d'information sĂ©lectionnĂ©s avec soin. +Dans ma liste des "feeds", j'ajoute les sites d'information que je consultait avant un par un ainsi que +plusieurs blogs techniques que j'apprĂ©cie. GrĂące Ă Feedly, je peux aussi faire ma veille technique en suivant les infos des diffĂ©rentes stacks technologiques -que j'utilise ou qui m'intĂ©ressent. -Le gros avantage de cette app c'est qu'elle affiche un nombre limitĂ© d'Ă©lĂ©ments chaque jour, sĂ©parĂ©s en pages finies. -Ainsi, je passe une dizaine de minutes par jour sur l'app (si je ne trouve pas d'article intĂ©ressant) et je n'ai -plus de raison d'y revenir plusieurs fois dans la mĂȘme journĂ©e.</p> -<p>Quand je trouve un article intĂ©ressant sur Feedly ou en naviguant sur le Web mais que je n'ai pas le temps ou -l'envie de le lire sur le moment, je l'enregistre dans Pocket. GrĂące Ă une extension Firefox, +que j'utilise ou qui m'intĂ©ressent. +Le gros avantage de cette app c'est qu'elle affiche un nombre limitĂ© d'Ă©lĂ©ments chaque jour, sĂ©parĂ©s en pages finies. +Ainsi, je passe une dizaine de minutes par jour sur l'app (si je ne trouve pas d'article intĂ©ressant) et je n'ai +plus de raison d'y revenir plusieurs fois dans la mĂȘme journĂ©e.</p> +<p>Quand je trouve un article intĂ©ressant sur Feedly ou en naviguant sur le Web mais que je n'ai pas le temps ou +l'envie de le lire sur le moment, je l'enregistre dans Pocket. GrĂące Ă une extension Firefox, je peux aussi enregistrer des articles depuis mon ordinateur et les retrouver plus tard sur mon tĂ©lĂ©phone. -Lorsque j'ai un long temps Ă attendre, par exemple dans les transports, ou simplement que j'ai du temps -Ă disposition pour lire, j'ouvre Pocket et je prends un article qui me tente. -L'app fonctionne en mode offline: une fois que les articles sont tĂ©lĂ©chargĂ©s sur le tĂ©lĂ©phone, +Lorsque j'ai un long temps Ă attendre, par exemple dans les transports, ou simplement que j'ai du temps +Ă disposition pour lire, j'ouvre Pocket et je prends un article qui me tente. +L'app fonctionne en mode offline: une fois que les articles sont tĂ©lĂ©chargĂ©s sur le tĂ©lĂ©phone, plus besoin de connexion pour lire les articles. -Je peux aussi synchroniser ma liseuse Ă©lectronnique avec Pocket mais j'utilise ce fonctionnement uniquement +Je peux aussi synchroniser ma liseuse Ă©lectronnique avec Pocket mais j'utilise ce fonctionnement uniquement pour les articles particuliĂšrement long.</p> -<p>GrĂące Ă ces deux apps, j'ai rĂ©ussi Ă reprendre la main sur mon smartphone: ce n'est plus lui qui me contrĂŽle -Ă coups de notifications et de fils d'actualitĂ©s interminables mais c'est moi qui choisi le contenu que je -souhaite lire et les moments d'utilisation de l'Ă©cran trouvent une fin naturelle une fois qu'il n'y a plus rien Ă lire.</p> +<p>GrĂące Ă ces deux apps, j'ai rĂ©ussi Ă reprendre la main sur mon smartphone: ce n'est plus lui qui me contrĂŽle +Ă coups de notifications et de fils d'actualitĂ©s interminables mais c'est moi qui choisi le contenu que je +souhaite lire et les moments d'utilisation de l'Ă©cran trouvent une fin naturelle une fois qu'il n'y a plus rien Ă lire.</p> <p>AprĂšs quelques annĂ©es (4 ans dĂ©jĂ !), les bienfaits sont clairs:</p> <ul> -<li>Je lis bien plus d'articles construits et intĂ©ressants, notamment faits par des petits bloggueurs plutĂŽt que des grandes corporations</li> -<li>J'ai rĂ©duit un peu ma consommation Ă©nergĂ©tique liĂ©e au numĂ©rique (mais sur ce point, la route est encore longue)</li> -<li>J'ai l'impression d'aller au fond des sujets, pas juste creuser la surface</li> -<li>J'ai rĂ©ussi Ă surmonter <a href='https://fr.wikipedia.org/wiki/Syndrome_FOMO' target='_blank' title='null'>la peur de rĂąter quelque chose</a> (mĂȘme si j'ai bien galĂ©rĂ© au dĂ©but)</li> -<li>J'ai du temps pour rĂ©flechir car je ne dĂ©gaine plus constament mon smartphone Ă chaque petit moment d'ennui. Prochain truc Ă rĂ©gler: Organiser toutes mes notes.</li> +<li>Je lis bien plus d'articles construits et intĂ©ressants, notamment faits par des petits bloggueurs plutĂŽt que des grandes corporations</li> +<li>J'ai rĂ©duit un peu ma consommation Ă©nergĂ©tique liĂ©e au numĂ©rique (mais sur ce point, la route est encore longue)</li> +<li>J'ai l'impression d'aller au fond des sujets, pas juste creuser la surface</li> +<li>J'ai rĂ©ussi Ă surmonter <a href="https://fr.wikipedia.org/wiki/Syndrome_FOMO">la peur de rĂąter quelque chose</a> (mĂȘme si j'ai bien galĂ©rĂ© au dĂ©but)</li> +<li>J'ai du temps pour rĂ©flechir car je ne dĂ©gaine plus constament mon smartphone Ă chaque petit moment d'ennui. Prochain truc Ă rĂ©gler: Organiser toutes mes notes.</li> </ul> <p>Ces nouvelles habitudes ont Ă©tĂ© un premier Ă©lan vers plus de sobriĂ©tĂ© numĂ©rique. -Maintenant que c'est bien en place, je continue Ă rechercher d'autres maniĂšres de faire et Ă essayer de les transmettre. +Maintenant que c'est bien en place, je continue Ă rechercher d'autres maniĂšres de faire et Ă essayer de les transmettre. Actuellement, je suis en train de dĂ©couvrir le protocole Gemini et le Geminispace. Un article suivra sur le sujet.</p> - </main> </body> </html>
@@ -1,45 +0,0 @@
-<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <link - rel="icon" - href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" - /> - <link href="/style.css" rel="stylesheet" /> - <title>Vers l'Internet de demain - Tim Izzo @5ika.ch</title> - </head> - <body> - <main> - <h1 class="mb-8">Tim Izzo @<a href="/">5ika.ch</a></h1> - <h1 id="vers-linternet-de-demain">Vers l'Internet de demain</h1> -<blockquote> -<p>13.11.2021</p> -</blockquote> -<p>Commençons avec une vĂ©ritĂ© Ă©tablie: notre utilisation actuelle de l'informatique et d'Internet engendre une consommation Ă©nergĂ©tique dĂ©mentielle et bien supĂ©rieure Ă ce que les ressources de notre planĂšte peuvent satisfaire.</p> -<p>Dans ce domaine, l'Histoire rĂ©cente nous montre deux choses :</p> -<ul> -<li>Notre sociĂ©tĂ© globalisĂ©e et interconnectĂ©e peut ĂȘtre mise Ă mal par des impacts survenant trĂšs loin de chez nous.</li> -<li>Nous sommes aujourd'hui totalement dĂ©pendant d'Internet, dans nos vies privĂ©es comme professionnelles.</li> -</ul> -<p>D'un point de vue un peu fataliste, nous ne pouvons lutter contre cela car Internet fait Ă©cho Ă notre besoin humain primitif de lien social. Pire que cela, les rĂ©seaux sociaux sont devenus le moyen principal de rĂ©pondre Ă ce besoin pour une bonne partie de la planĂšte. Essayez de vous dĂ©brancher pendant quelques semaines de toutes les plateformes sociales en ligne et vous verrez que cela donne un sentiment de solitude, de mise Ă l'Ă©cart. L'impression de lutter contre son instinct.</p> -<p>ParallĂšlement Ă cela, Internet (et l'informatique de maniĂšre gĂ©nĂ©rale) repose sur l'Ă©lectronique elle mĂȘme nĂ©cessitant l'usage de l'Ă©lectricitĂ©, une source d'Ă©nergie artificielle (dans la maniĂšre dont on s'en sert). Ainsi, il est absolument impossible d'obtenir un Internet avec une empreinte Ă©cologique nulle, quoique l'on fasse.</p> -<p>ConsidĂ©rant cela, comment peut-on utiliser Internet sans accentuer les pressions Ă©cologiques que nous faisons peser sur notre planĂšte ? Est-ce que la seule solution n'est-elle pas de cesser d'utiliser Internet et de repenser nos vies en profondeur au plus vite ?</p> -<p>Je ne pense pas qu'il faille, ni mĂȘme que ce soit possible, que l'on se passe aujourd'hui d'Internet. Nous en avons besoin. C'est devenu une nĂ©cessitĂ© pour nos vies et on ne peut revenir en arriĂšre. Mais je pense que l'on peut changer notre conception et notre utilisation d'Internet vers plus de sobriĂ©tĂ© Ă©nergĂ©tique.</p> -<p>Nous avons tendance Ă l'oublier, pris entre les milliers d'applications que l'on utilise, mais Internet est avant tout un <strong>outil</strong>. Il existe parce que l'on a besoin de lui, il nous est <em>utile</em>. On ne vit pas pour crĂ©er Internet, on crĂ©e Internet pour pouvoir faciliter nos vies. Et son utilitĂ© est qu'il nous permet de communiquer entre humains, d'Ă©changer de l'information.</p> -<p>Aujourd'hui, cet notion d'outil a mutĂ© vers une utilitĂ© qui serait plutĂŽt "faire en sorte que des entreprises puissent se faire de l'argent en atteignant chaque humain". Mais Ă titre individuel, en tant qu'<em>humain</em>, a-t-on vraiment besoin que l'on nous indique ce que l'on veut acheter? ce que l'on doit <em>liker?</em> avec qui l'on doit communiquer? comment les personnes cĂ©lĂšbres vivent leur vie? comment les chats sont trop mignons ?</p> -<p>Dans la rĂ©alitĂ© des choses, plutĂŽt non. Une majoritĂ© de ce que l'on Ă©change sur le Web est destinĂ© Ă des humains qui sont gĂ©ographiquement proches de nous: communiquer avec ses proches ou ses amis, chercher des informations sur une manifestation, rĂ©server un restaurant ou une place de cinĂ©, partager des photos, des articles...</p> -<p>Pourtant, avec les applications et services en ligne que nous utilisons chaque jour, les donnĂ©es transitent Ă travers des macro-noeuds Ă l'autre bout du globe qui concentrent tout le trafic et le redistribue (Google, Facebook,...). Quand vous envoyez un message Ă votre voisin par Whatsapp, le message passent par un certains nombre de routeurs jusqu'Ă atteindre un serveur aux Ătats-unis pour ĂȘtre traitĂ© puis refais le chemin en sens inverse jusqu'Ă l'ordinateur de votre voisin. Au passage, le message s'alourdit d'un peu de publicitĂ© et de scripts analysant votre utilisation du service.</p> -<p>Pourquoi ne pas lui envoyer directement ? Pourquoi consommer une grande quantitĂ© d'Ă©nergie pour faire un aller-retour Ă travers le monde plutĂŽt que de prendre le chemin le plus court sur le rĂ©seau vers votre voisin ?</p> -<p>Si on considĂšre qu'Internet est un outil pour Ă©changer essentiellement des donnĂ©es avec des gens gĂ©ographiquement proches de nous et de temps en temps des gens plus Ă©loignĂ©s, nous pourrions considĂ©rer un Internet diffĂ©rent:</p> -<ul> -<li>Un rĂ©seau plus lent mais plus sĂ»rs, favorisant la confidentialitĂ©, l'authenticitĂ© et l'intĂ©gritĂ© des donnĂ©es Ă©changĂ©es plutĂŽt que la vitesse. Techniquement, cela nous permettrait de mettre en place des rĂ©seaux longues distances, plus universellement accessibles.</li> -<li>Un rĂ©seau pas disponible 100% du temps mais peu consommateur en Ă©nergie. Techniquement, on pourrait ainsi envisager de l'alimenter avec de l'Ă©nergie solaires, Ă©olienne, voir produite par la force humaine.</li> -</ul> -<p>Depuis maintenant 30 ans, dans la quasi-totalitĂ© des pays du monde, nous avons des Ă©quipements de tĂ©lĂ©communication puissants capables de relayer des messages efficacement. Une connexion WiFi ou Bluetooth peut transmettre des messages entre deux systĂšmes distants d'une centaine de mĂštres et on a dĂ©jĂ ce qu'il faut dans nos tĂ©lĂ©phones. Il y a Ă©galement les rĂ©seaux LoRaWAN, maintenant prĂ©sents un peu partout et dĂ©diĂ©s Ă l'Internet des Objets, qui permettent de transmettre des (petits) messages sur des dizaines de kilomĂštres. Les rĂ©seaux cellulaires (2G, 3G, 4G,...) correspondent aussi Ă des systĂšmes de tĂ©lĂ©communications omniprĂ©sents et dĂ©jĂ compatibles avec ce que l'on a dans la poche.</p> -<p>En se basant sur les rĂ©seaux dĂ©jĂ existants proposĂ©s par nos fournisseurs d'accĂšs Internet, il existe aujourd'hui un nombre croissants de technologies et de protocoles nous permettant de nous affranchir des macro-noeuds et retrouver le fonctionnement d'Internet tel qu'il a Ă©tĂ© pensĂ© il y a plus de 30 ans. La condition pour que cet Internet neutre et dĂ©centralisĂ© puisse prendre sa place dĂ©pend de chaque utilisateur: si vous utilisez un service centralisĂ© comme Facebook ou Google, alors ce service (et l'entreprise derriĂšre) gagne en puissance. Mais si vous utilisez des technologies dĂ©centralisĂ©es voir distribuĂ©es alors vous donner de la puissance Ă ces alternatives et vous participez Ă la mise en place de l'Internet de demain.</p> - - </main> - </body> -</html>
@@ -1,2404 +1,1 @@
-/* -! tailwindcss v3.2.0 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -*/ - -html { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - /* 4 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font family by default. -2. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -[type='button'], -[type='reset'], -[type='submit'] { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* -Removes the default spacing and border for appropriate elements. -*/ - -blockquote, -dl, -dd, -h1, -h2, -h3, -h4, -h5, -h6, -hr, -figure, -p, -pre { - margin: 0; -} - -fieldset { - margin: 0; - padding: 0; -} - -legend { - padding: 0; -} - -ol, -ul, -menu { - list-style: none; - margin: 0; - padding: 0; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* Make elements with the HTML hidden attribute stay hidden by default */ - -[hidden] { - display: none; -} - -body { - --tw-bg-opacity: 1; - background-color: rgb(241 245 249 / var(--tw-bg-opacity)); -} - -main { - width: 100%; -} - -@media (min-width: 640px) { - main { - max-width: 640px; - } -} - -@media (min-width: 768px) { - main { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - main { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - main { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - main { - max-width: 1536px; - } -} - -main { - max-width: 48rem; - margin-left: auto; - margin-right: auto; - padding-left: 1rem; - padding-right: 1rem; - padding-top: 3rem; - padding-bottom: 3rem; - font-family: Menlo, Monaco, Lucida Console, Liberation Mono, - DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; -} - -h1 { - font-size: 1.5rem; - line-height: 2rem; - font-weight: 700; -} - -h2 { - font-size: 1.25rem; - line-height: 1.75rem; - font-weight: 700; - margin-top: 2rem; - margin-bottom: 1rem; -} - -p { - margin-top: 2rem; -} - -blockquote { - --tw-text-opacity: 1; - color: rgb(55 65 81 / var(--tw-text-opacity)); -} - -a { - --tw-text-opacity: 1; - color: rgb(79 70 229 / var(--tw-text-opacity)); -} - -a:hover { - --tw-text-opacity: 1; - color: rgb(129 140 248 / var(--tw-text-opacity)); -} - -a { - transition-property: all; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; -} - -::-webkit-backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; -} - -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; -} - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .container { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .container { - max-width: 1536px; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.not-sr-only { - position: static; - width: auto; - height: auto; - padding: 0; - margin: 0; - overflow: visible; - clip: auto; - white-space: normal; -} - -.pointer-events-none { - pointer-events: none; -} - -.pointer-events-auto { - pointer-events: auto; -} - -.visible { - visibility: visible; -} - -.invisible { - visibility: hidden; -} - -.collapse { - visibility: collapse; -} - -.static { - position: static; -} - -.fixed { - position: fixed; -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.sticky { - position: sticky; -} - -.-inset-1 { - top: -0.25rem; - right: -0.25rem; - bottom: -0.25rem; - left: -0.25rem; -} - -.isolate { - isolation: isolate; -} - -.isolation-auto { - isolation: auto; -} - -.float-right { - float: right; -} - -.float-left { - float: left; -} - -.float-none { - float: none; -} - -.clear-left { - clear: left; -} - -.clear-right { - clear: right; -} - -.clear-both { - clear: both; -} - -.clear-none { - clear: none; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mb-8 { - margin-bottom: 2rem; -} - -.box-border { - box-sizing: border-box; -} - -.box-content { - box-sizing: content-box; -} - -.block { - display: block; -} - -.inline-block { - display: inline-block; -} - -.inline { - display: inline; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.table { - display: table; -} - -.inline-table { - display: inline-table; -} - -.table-caption { - display: table-caption; -} - -.table-cell { - display: table-cell; -} - -.table-column { - display: table-column; -} - -.table-column-group { - display: table-column-group; -} - -.table-footer-group { - display: table-footer-group; -} - -.table-header-group { - display: table-header-group; -} - -.table-row-group { - display: table-row-group; -} - -.table-row { - display: table-row; -} - -.flow-root { - display: flow-root; -} - -.grid { - display: grid; -} - -.inline-grid { - display: inline-grid; -} - -.contents { - display: contents; -} - -.list-item { - display: list-item; -} - -.hidden { - display: none; -} - -.flex-shrink { - flex-shrink: 1; -} - -.shrink { - flex-shrink: 1; -} - -.flex-grow { - flex-grow: 1; -} - -.grow { - flex-grow: 1; -} - -.table-auto { - table-layout: auto; -} - -.table-fixed { - table-layout: fixed; -} - -.border-collapse { - border-collapse: collapse; -} - -.border-separate { - border-collapse: separate; -} - -.transform { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\!transform { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; -} - -.transform-cpu { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.transform-gpu { - transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.transform-none { - transform: none; -} - -.touch-auto { - touch-action: auto; -} - -.touch-none { - touch-action: none; -} - -.touch-pan-x { - --tw-pan-x: pan-x; - touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); -} - -.touch-pan-left { - --tw-pan-x: pan-left; - touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); -} - -.touch-pan-right { - --tw-pan-x: pan-right; - touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); -} - -.touch-pan-y { - --tw-pan-y: pan-y; - touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); -} - -.touch-pan-up { - --tw-pan-y: pan-up; - touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); -} - -.touch-pan-down { - --tw-pan-y: pan-down; - touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); -} - -.touch-pinch-zoom { - --tw-pinch-zoom: pinch-zoom; - touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); -} - -.touch-manipulation { - touch-action: manipulation; -} - -.select-none { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -.select-text { - -webkit-user-select: text; - -moz-user-select: text; - user-select: text; -} - -.select-all { - -webkit-user-select: all; - -moz-user-select: all; - user-select: all; -} - -.select-auto { - -webkit-user-select: auto; - -moz-user-select: auto; - user-select: auto; -} - -.resize-none { - resize: none; -} - -.resize-y { - resize: vertical; -} - -.resize-x { - resize: horizontal; -} - -.resize { - resize: both; -} - -.snap-none { - scroll-snap-type: none; -} - -.snap-x { - scroll-snap-type: x var(--tw-scroll-snap-strictness); -} - -.snap-y { - scroll-snap-type: y var(--tw-scroll-snap-strictness); -} - -.snap-both { - scroll-snap-type: both var(--tw-scroll-snap-strictness); -} - -.snap-mandatory { - --tw-scroll-snap-strictness: mandatory; -} - -.snap-proximity { - --tw-scroll-snap-strictness: proximity; -} - -.snap-start { - scroll-snap-align: start; -} - -.snap-end { - scroll-snap-align: end; -} - -.snap-center { - scroll-snap-align: center; -} - -.snap-align-none { - scroll-snap-align: none; -} - -.snap-normal { - scroll-snap-stop: normal; -} - -.snap-always { - scroll-snap-stop: always; -} - -.list-inside { - list-style-position: inside; -} - -.list-outside { - list-style-position: outside; -} - -.appearance-none { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.break-before-auto { - -moz-column-break-before: auto; - break-before: auto; -} - -.break-before-avoid { - -moz-column-break-before: avoid; - break-before: avoid; -} - -.break-before-all { - -moz-column-break-before: all; - break-before: all; -} - -.break-before-avoid-page { - -moz-column-break-before: avoid; - break-before: avoid-page; -} - -.break-before-page { - -moz-column-break-before: page; - break-before: page; -} - -.break-before-left { - -moz-column-break-before: left; - break-before: left; -} - -.break-before-right { - -moz-column-break-before: right; - break-before: right; -} - -.break-before-column { - -moz-column-break-before: column; - break-before: column; -} - -.break-inside-auto { - -moz-column-break-inside: auto; - break-inside: auto; -} - -.break-inside-avoid { - -moz-column-break-inside: avoid; - break-inside: avoid; -} - -.break-inside-avoid-page { - break-inside: avoid-page; -} - -.break-inside-avoid-column { - -moz-column-break-inside: avoid; - break-inside: avoid-column; -} - -.break-after-auto { - -moz-column-break-after: auto; - break-after: auto; -} - -.break-after-avoid { - -moz-column-break-after: avoid; - break-after: avoid; -} - -.break-after-all { - -moz-column-break-after: all; - break-after: all; -} - -.break-after-avoid-page { - -moz-column-break-after: avoid; - break-after: avoid-page; -} - -.break-after-page { - -moz-column-break-after: page; - break-after: page; -} - -.break-after-left { - -moz-column-break-after: left; - break-after: left; -} - -.break-after-right { - -moz-column-break-after: right; - break-after: right; -} - -.break-after-column { - -moz-column-break-after: column; - break-after: column; -} - -.grid-flow-row { - grid-auto-flow: row; -} - -.grid-flow-col { - grid-auto-flow: column; -} - -.grid-flow-dense { - grid-auto-flow: dense; -} - -.grid-flow-row-dense { - grid-auto-flow: row dense; -} - -.grid-flow-col-dense { - grid-auto-flow: column dense; -} - -.flex-row { - flex-direction: row; -} - -.flex-row-reverse { - flex-direction: row-reverse; -} - -.flex-col { - flex-direction: column; -} - -.flex-col-reverse { - flex-direction: column-reverse; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse; -} - -.flex-nowrap { - flex-wrap: nowrap; -} - -.place-content-center { - place-content: center; -} - -.place-content-start { - place-content: start; -} - -.place-content-end { - place-content: end; -} - -.place-content-between { - place-content: space-between; -} - -.place-content-around { - place-content: space-around; -} - -.place-content-evenly { - place-content: space-evenly; -} - -.place-content-baseline { - place-content: baseline; -} - -.place-content-stretch { - place-content: stretch; -} - -.place-items-start { - place-items: start; -} - -.place-items-end { - place-items: end; -} - -.place-items-center { - place-items: center; -} - -.place-items-baseline { - place-items: baseline; -} - -.place-items-stretch { - place-items: stretch; -} - -.content-center { - align-content: center; -} - -.content-start { - align-content: flex-start; -} - -.content-end { - align-content: flex-end; -} - -.content-between { - align-content: space-between; -} - -.content-around { - align-content: space-around; -} - -.content-evenly { - align-content: space-evenly; -} - -.content-baseline { - align-content: baseline; -} - -.items-start { - align-items: flex-start; -} - -.items-end { - align-items: flex-end; -} - -.items-center { - align-items: center; -} - -.items-baseline { - align-items: baseline; -} - -.items-stretch { - align-items: stretch; -} - -.justify-start { - justify-content: flex-start; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.justify-around { - justify-content: space-around; -} - -.justify-evenly { - justify-content: space-evenly; -} - -.justify-items-start { - justify-items: start; -} - -.justify-items-end { - justify-items: end; -} - -.justify-items-center { - justify-items: center; -} - -.justify-items-stretch { - justify-items: stretch; -} - -.space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-reverse > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 1; -} - -.space-x-reverse > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 1; -} - -.divide-x > :not([hidden]) ~ :not([hidden]) { - --tw-divide-x-reverse: 0; - border-right-width: calc(1px * var(--tw-divide-x-reverse)); - border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse))); -} - -.divide-y > :not([hidden]) ~ :not([hidden]) { - --tw-divide-y-reverse: 0; - border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); -} - -.divide-y-reverse > :not([hidden]) ~ :not([hidden]) { - --tw-divide-y-reverse: 1; -} - -.divide-x-reverse > :not([hidden]) ~ :not([hidden]) { - --tw-divide-x-reverse: 1; -} - -.divide-solid > :not([hidden]) ~ :not([hidden]) { - border-style: solid; -} - -.divide-dashed > :not([hidden]) ~ :not([hidden]) { - border-style: dashed; -} - -.divide-dotted > :not([hidden]) ~ :not([hidden]) { - border-style: dotted; -} - -.divide-double > :not([hidden]) ~ :not([hidden]) { - border-style: double; -} - -.divide-none > :not([hidden]) ~ :not([hidden]) { - border-style: none; -} - -.place-self-auto { - place-self: auto; -} - -.place-self-start { - place-self: start; -} - -.place-self-end { - place-self: end; -} - -.place-self-center { - place-self: center; -} - -.place-self-stretch { - place-self: stretch; -} - -.self-auto { - align-self: auto; -} - -.self-start { - align-self: flex-start; -} - -.self-end { - align-self: flex-end; -} - -.self-center { - align-self: center; -} - -.self-stretch { - align-self: stretch; -} - -.self-baseline { - align-self: baseline; -} - -.justify-self-auto { - justify-self: auto; -} - -.justify-self-start { - justify-self: start; -} - -.justify-self-end { - justify-self: end; -} - -.justify-self-center { - justify-self: center; -} - -.justify-self-stretch { - justify-self: stretch; -} - -.overflow-auto { - overflow: auto; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-clip { - overflow: clip; -} - -.overflow-visible { - overflow: visible; -} - -.overflow-scroll { - overflow: scroll; -} - -.overflow-x-auto { - overflow-x: auto; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.overflow-x-hidden { - overflow-x: hidden; -} - -.overflow-y-hidden { - overflow-y: hidden; -} - -.overflow-x-clip { - overflow-x: clip; -} - -.overflow-y-clip { - overflow-y: clip; -} - -.overflow-x-visible { - overflow-x: visible; -} - -.overflow-y-visible { - overflow-y: visible; -} - -.overflow-x-scroll { - overflow-x: scroll; -} - -.overflow-y-scroll { - overflow-y: scroll; -} - -.overscroll-auto { - overscroll-behavior: auto; -} - -.overscroll-contain { - overscroll-behavior: contain; -} - -.overscroll-none { - overscroll-behavior: none; -} - -.overscroll-y-auto { - overscroll-behavior-y: auto; -} - -.overscroll-y-contain { - overscroll-behavior-y: contain; -} - -.overscroll-y-none { - overscroll-behavior-y: none; -} - -.overscroll-x-auto { - overscroll-behavior-x: auto; -} - -.overscroll-x-contain { - overscroll-behavior-x: contain; -} - -.overscroll-x-none { - overscroll-behavior-x: none; -} - -.scroll-auto { - scroll-behavior: auto; -} - -.scroll-smooth { - scroll-behavior: smooth; -} - -.truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.overflow-ellipsis { - text-overflow: ellipsis; -} - -.text-ellipsis { - text-overflow: ellipsis; -} - -.text-clip { - text-overflow: clip; -} - -.whitespace-normal { - white-space: normal; -} - -.whitespace-nowrap { - white-space: nowrap; -} - -.whitespace-pre { - white-space: pre; -} - -.whitespace-pre-line { - white-space: pre-line; -} - -.whitespace-pre-wrap { - white-space: pre-wrap; -} - -.break-normal { - overflow-wrap: normal; - word-break: normal; -} - -.break-words { - overflow-wrap: break-word; -} - -.break-all { - word-break: break-all; -} - -.break-keep { - word-break: keep-all; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-t { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.rounded-r { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; -} - -.rounded-b { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.rounded-l { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.rounded-tl { - border-top-left-radius: 0.25rem; -} - -.rounded-tr { - border-top-right-radius: 0.25rem; -} - -.rounded-br { - border-bottom-right-radius: 0.25rem; -} - -.rounded-bl { - border-bottom-left-radius: 0.25rem; -} - -.border { - border-width: 1px; -} - -.border-x { - border-left-width: 1px; - border-right-width: 1px; -} - -.border-y { - border-top-width: 1px; - border-bottom-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-r { - border-right-width: 1px; -} - -.border-b { - border-bottom-width: 1px; -} - -.border-l { - border-left-width: 1px; -} - -.border-solid { - border-style: solid; -} - -.border-dashed { - border-style: dashed; -} - -.border-dotted { - border-style: dotted; -} - -.border-double { - border-style: double; -} - -.border-hidden { - border-style: hidden; -} - -.border-none { - border-style: none; -} - -.bg-\[rgb\(255\2c 0\2c 0\)\] { - --tw-bg-opacity: 1; - background-color: rgb(255 0 0 / var(--tw-bg-opacity)); -} - -.decoration-slice { - -webkit-box-decoration-break: slice; - box-decoration-break: slice; -} - -.decoration-clone { - -webkit-box-decoration-break: clone; - box-decoration-break: clone; -} - -.box-decoration-slice { - -webkit-box-decoration-break: slice; - box-decoration-break: slice; -} - -.box-decoration-clone { - -webkit-box-decoration-break: clone; - box-decoration-break: clone; -} - -.bg-fixed { - background-attachment: fixed; -} - -.bg-local { - background-attachment: local; -} - -.bg-scroll { - background-attachment: scroll; -} - -.bg-clip-border { - background-clip: border-box; -} - -.bg-clip-padding { - background-clip: padding-box; -} - -.bg-clip-content { - background-clip: content-box; -} - -.bg-clip-text { - -webkit-background-clip: text; - background-clip: text; -} - -.bg-repeat { - background-repeat: repeat; -} - -.bg-no-repeat { - background-repeat: no-repeat; -} - -.bg-repeat-x { - background-repeat: repeat-x; -} - -.bg-repeat-y { - background-repeat: repeat-y; -} - -.bg-repeat-round { - background-repeat: round; -} - -.bg-repeat-space { - background-repeat: space; -} - -.bg-origin-border { - background-origin: border-box; -} - -.bg-origin-padding { - background-origin: padding-box; -} - -.bg-origin-content { - background-origin: content-box; -} - -.object-contain { - -o-object-fit: contain; - object-fit: contain; -} - -.object-cover { - -o-object-fit: cover; - object-fit: cover; -} - -.object-fill { - -o-object-fit: fill; - object-fit: fill; -} - -.object-none { - -o-object-fit: none; - object-fit: none; -} - -.object-scale-down { - -o-object-fit: scale-down; - object-fit: scale-down; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.text-right { - text-align: right; -} - -.text-justify { - text-align: justify; -} - -.text-start { - text-align: start; -} - -.text-end { - text-align: end; -} - -.align-baseline { - vertical-align: baseline; -} - -.align-top { - vertical-align: top; -} - -.align-middle { - vertical-align: middle; -} - -.align-bottom { - vertical-align: bottom; -} - -.align-text-top { - vertical-align: text-top; -} - -.align-text-bottom { - vertical-align: text-bottom; -} - -.align-sub { - vertical-align: sub; -} - -.align-super { - vertical-align: super; -} - -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - -.font-bold { - font-weight: 700; -} - -.uppercase { - text-transform: uppercase; -} - -.lowercase { - text-transform: lowercase; -} - -.capitalize { - text-transform: capitalize; -} - -.normal-case { - text-transform: none; -} - -.italic { - font-style: italic; -} - -.not-italic { - font-style: normal; -} - -.normal-nums { - font-variant-numeric: normal; -} - -.ordinal { - --tw-ordinal: ordinal; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.slashed-zero { - --tw-slashed-zero: slashed-zero; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.lining-nums { - --tw-numeric-figure: lining-nums; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.oldstyle-nums { - --tw-numeric-figure: oldstyle-nums; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.proportional-nums { - --tw-numeric-spacing: proportional-nums; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.tabular-nums { - --tw-numeric-spacing: tabular-nums; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.diagonal-fractions { - --tw-numeric-fraction: diagonal-fractions; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.stacked-fractions { - --tw-numeric-fraction: stacked-fractions; - font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction); -} - -.text-\[\#336699\]\/\[\.35\] { - color: rgb(51 102 153 / .35); -} - -.text-blue-500 { - --tw-text-opacity: 1; - color: rgb(59 130 246 / var(--tw-text-opacity)); -} - -.underline { - text-decoration-line: underline; -} - -.overline { - text-decoration-line: overline; -} - -.line-through { - text-decoration-line: line-through; -} - -.no-underline { - text-decoration-line: none; -} - -.decoration-solid { - text-decoration-style: solid; -} - -.decoration-double { - text-decoration-style: double; -} - -.decoration-dotted { - text-decoration-style: dotted; -} - -.decoration-dashed { - text-decoration-style: dashed; -} - -.decoration-wavy { - text-decoration-style: wavy; -} - -.antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.subpixel-antialiased { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto; -} - -.bg-blend-normal { - background-blend-mode: normal; -} - -.bg-blend-multiply { - background-blend-mode: multiply; -} - -.bg-blend-screen { - background-blend-mode: screen; -} - -.bg-blend-overlay { - background-blend-mode: overlay; -} - -.bg-blend-darken { - background-blend-mode: darken; -} - -.bg-blend-lighten { - background-blend-mode: lighten; -} - -.bg-blend-color-dodge { - background-blend-mode: color-dodge; -} - -.bg-blend-color-burn { - background-blend-mode: color-burn; -} - -.bg-blend-hard-light { - background-blend-mode: hard-light; -} - -.bg-blend-soft-light { - background-blend-mode: soft-light; -} - -.bg-blend-difference { - background-blend-mode: difference; -} - -.bg-blend-exclusion { - background-blend-mode: exclusion; -} - -.bg-blend-hue { - background-blend-mode: hue; -} - -.bg-blend-saturation { - background-blend-mode: saturation; -} - -.bg-blend-color { - background-blend-mode: color; -} - -.bg-blend-luminosity { - background-blend-mode: luminosity; -} - -.mix-blend-normal { - mix-blend-mode: normal; -} - -.mix-blend-multiply { - mix-blend-mode: multiply; -} - -.mix-blend-screen { - mix-blend-mode: screen; -} - -.mix-blend-overlay { - mix-blend-mode: overlay; -} - -.mix-blend-darken { - mix-blend-mode: darken; -} - -.mix-blend-lighten { - mix-blend-mode: lighten; -} - -.mix-blend-color-dodge { - mix-blend-mode: color-dodge; -} - -.mix-blend-color-burn { - mix-blend-mode: color-burn; -} - -.mix-blend-hard-light { - mix-blend-mode: hard-light; -} - -.mix-blend-soft-light { - mix-blend-mode: soft-light; -} - -.mix-blend-difference { - mix-blend-mode: difference; -} - -.mix-blend-exclusion { - mix-blend-mode: exclusion; -} - -.mix-blend-hue { - mix-blend-mode: hue; -} - -.mix-blend-saturation { - mix-blend-mode: saturation; -} - -.mix-blend-color { - mix-blend-mode: color; -} - -.mix-blend-luminosity { - mix-blend-mode: luminosity; -} - -.mix-blend-plus-lighter { - mix-blend-mode: plus-lighter; -} - -.shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.\!shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1) !important; - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color) !important; - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; -} - -.outline-none { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.outline { - outline-style: solid; -} - -.outline-dashed { - outline-style: dashed; -} - -.outline-dotted { - outline-style: dotted; -} - -.outline-double { - outline-style: double; -} - -.ring { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.ring-inset { - --tw-ring-inset: inset; -} - -.blur { - --tw-blur: blur(8px); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.drop-shadow { - --tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06)); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.grayscale { - --tw-grayscale: grayscale(100%); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.invert { - --tw-invert: invert(100%); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.\!invert { - --tw-invert: invert(100%) !important; - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important; -} - -.sepia { - --tw-sepia: sepia(100%); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.filter { - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.\!filter { - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important; -} - -.filter-none { - filter: none; -} - -.backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-grayscale { - --tw-backdrop-grayscale: grayscale(100%); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-invert { - --tw-backdrop-invert: invert(100%); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-sepia { - --tw-backdrop-sepia: sepia(100%); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-filter { - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-filter-none { - -webkit-backdrop-filter: none; - backdrop-filter: none; -} - -.transition { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.ease-in { - transition-timing-function: cubic-bezier(0.4, 0, 1, 1); -} - -.ease-out { - transition-timing-function: cubic-bezier(0, 0, 0.2, 1); -} - -.ease-in-out { - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -.content-\[\'this-is-also-valid\]-weirdly-enough\'\] { - --tw-content: 'this-is-also-valid]-weirdly-enough'; - content: var(--tw-content); -} - -.\[a-zA-Z\:_\] { - a-z-a--z: ; -} - -.hover\:font-bold:hover { - font-weight: 700; -} - -.before\:hover\:text-center:hover::before { - content: var(--tw-content); - text-align: center; -} - -.hover\:before\:text-center:hover::before { - content: var(--tw-content); - text-align: center; -} - -.hover\:focus\:text-center:focus:hover { - text-align: center; -} - -.focus\:hover\:text-center:hover:focus { - text-align: center; -} - -@media (min-width: 640px) { - .sm\:container { - width: 100%; - } - - @media (min-width: 640px) { - .sm\:container { - max-width: 640px; - } - } - - @media (min-width: 768px) { - .sm\:container { - max-width: 768px; - } - } - - @media (min-width: 1024px) { - .sm\:container { - max-width: 1024px; - } - } - - @media (min-width: 1280px) { - .sm\:container { - max-width: 1280px; - } - } - - @media (min-width: 1536px) { - .sm\:container { - max-width: 1536px; - } - } - - .sm\:underline { - text-decoration-line: underline; - } -} - -@media (prefers-color-scheme: dark) { - @media (min-width: 1024px) { - .dark\:lg\:hover\:\[paint-order\:markers\]:hover { - paint-order: markers; - } - } -} +/*! tailwindcss v3.2.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}body{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}main{width:100%}@media (min-width:640px){main{max-width:640px}}@media (min-width:768px){main{max-width:768px}}@media (min-width:1024px){main{max-width:1024px}}@media (min-width:1280px){main{max-width:1280px}}@media (min-width:1536px){main{max-width:1536px}}main{max-width:48rem;margin-left:auto;margin-right:auto;padding:3rem 1rem;font-family:Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif}h1{font-size:1.5rem;line-height:2rem}h1,h2{font-weight:700}h2{font-size:1.25rem;line-height:1.75rem;margin-bottom:1rem}h2,p{margin-top:2rem}blockquote{color:rgb(55 65 81/var(--tw-text-opacity))}a,blockquote{--tw-text-opacity:1}a{color:rgb(79 70 229/var(--tw-text-opacity))}a:hover{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}a{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{top:-.25rem;right:-.25rem;bottom:-.25rem;left:-.25rem}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.float-right{float:right}.float-left{float:left}.float-none{float:none}.clear-left{clear:left}.clear-right{clear:right}.clear-both{clear:both}.clear-none{clear:none}.mb-8{margin-bottom:2rem}.mt-2{margin-top:.5rem}.box-border{box-sizing:border-box}.box-content{box-sizing:initial}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-separate{border-collapse:initial}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform-cpu{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-gpu{transform:translate3d(var(--tw-translate-x),var(--tw-translate-y),0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.touch-auto{touch-action:auto}.touch-none{touch-action:none}.touch-pan-x{--tw-pan-x:pan-x}.touch-pan-left,.touch-pan-x{touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-left{--tw-pan-x:pan-left}.touch-pan-right{--tw-pan-x:pan-right}.touch-pan-right,.touch-pan-y{touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-y{--tw-pan-y:pan-y}.touch-pan-up{--tw-pan-y:pan-up}.touch-pan-down,.touch-pan-up{touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-pan-down{--tw-pan-y:pan-down}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.select-auto{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.resize-none{resize:none}.resize-y{resize:vertical}.resize-x{resize:horizontal}.resize{resize:both}.snap-none{scroll-snap-type:none}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-y{scroll-snap-type:y var(--tw-scroll-snap-strictness)}.snap-both{scroll-snap-type:both var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-proximity{--tw-scroll-snap-strictness:proximity}.snap-start{scroll-snap-align:start}.snap-end{scroll-snap-align:end}.snap-center{scroll-snap-align:center}.snap-align-none{scroll-snap-align:none}.snap-normal{scroll-snap-stop:normal}.snap-always{scroll-snap-stop:always}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.break-before-auto{-moz-column-break-before:auto;break-before:auto}.break-before-avoid{-moz-column-break-before:avoid;break-before:avoid}.break-before-all{-moz-column-break-before:all;break-before:all}.break-before-avoid-page{-moz-column-break-before:avoid;break-before:avoid-page}.break-before-page{-moz-column-break-before:page;break-before:page}.break-before-left{-moz-column-break-before:left;break-before:left}.break-before-right{-moz-column-break-before:right;break-before:right}.break-before-column{-moz-column-break-before:column;break-before:column}.break-inside-auto{-moz-column-break-inside:auto;break-inside:auto}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.break-inside-avoid-page{break-inside:avoid-page}.break-inside-avoid-column{-moz-column-break-inside:avoid;break-inside:avoid-column}.break-after-auto{-moz-column-break-after:auto;break-after:auto}.break-after-avoid{-moz-column-break-after:avoid;break-after:avoid}.break-after-all{-moz-column-break-after:all;break-after:all}.break-after-avoid-page{-moz-column-break-after:avoid;break-after:avoid-page}.break-after-page{-moz-column-break-after:page;break-after:page}.break-after-left{-moz-column-break-after:left;break-after:left}.break-after-right{-moz-column-break-after:right;break-after:right}.break-after-column{-moz-column-break-after:column;break-after:column}.grid-flow-row{grid-auto-flow:row}.grid-flow-col{grid-auto-flow:column}.grid-flow-dense{grid-auto-flow:dense}.grid-flow-row-dense{grid-auto-flow:row dense}.grid-flow-col-dense{grid-auto-flow:column dense}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.place-content-center{place-content:center}.place-content-start{place-content:start}.place-content-end{place-content:end}.place-content-between{place-content:space-between}.place-content-around{place-content:space-around}.place-content-evenly{place-content:space-evenly}.place-content-baseline{place-content:baseline}.place-content-stretch{place-content:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-baseline{place-items:baseline}.place-items-stretch{place-items:stretch}.content-center{align-content:center}.content-start{align-content:flex-start}.content-end{align-content:flex-end}.content-between{align-content:space-between}.content-around{align-content:space-around}.content-evenly{align-content:space-evenly}.content-baseline{align-content:baseline}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px*var(--tw-divide-x-reverse));border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.divide-solid>:not([hidden])~:not([hidden]){border-style:solid}.divide-dashed>:not([hidden])~:not([hidden]){border-style:dashed}.divide-dotted>:not([hidden])~:not([hidden]){border-style:dotted}.divide-double>:not([hidden])~:not([hidden]){border-style:double}.divide-none>:not([hidden])~:not([hidden]){border-style:none}.place-self-auto{place-self:auto}.place-self-start{place-self:start}.place-self-end{place-self:end}.place-self-center{place-self:center}.place-self-stretch{place-self:stretch}.self-auto{align-self:auto}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-center{align-self:center}.self-stretch{align-self:stretch}.self-baseline{align-self:baseline}.justify-self-auto{justify-self:auto}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.justify-self-stretch{justify-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.overflow-y-clip{overflow-y:clip}.overflow-x-visible{overflow-x:visible}.overflow-y-visible{overflow-y:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.overscroll-auto{overscroll-behavior:auto}.overscroll-contain{overscroll-behavior:contain}.overscroll-none{overscroll-behavior:none}.overscroll-y-auto{overscroll-behavior-y:auto}.overscroll-y-contain{overscroll-behavior-y:contain}.overscroll-y-none{overscroll-behavior-y:none}.overscroll-x-auto{overscroll-behavior-x:auto}.overscroll-x-contain{overscroll-behavior-x:contain}.overscroll-x-none{overscroll-behavior-x:none}.scroll-auto{scroll-behavior:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;white-space:nowrap}.overflow-ellipsis,.text-ellipsis,.truncate{text-overflow:ellipsis}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.rounded{border-radius:.25rem}.rounded-t{border-top-left-radius:.25rem}.rounded-r,.rounded-t{border-top-right-radius:.25rem}.rounded-b,.rounded-r{border-bottom-right-radius:.25rem}.rounded-b,.rounded-l{border-bottom-left-radius:.25rem}.rounded-l,.rounded-tl{border-top-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-bottom-width:1px}.border-t,.border-y{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-double{border-style:double}.border-hidden{border-style:hidden}.border-none{border-style:none}.bg-\[rgb\(255\2c 0\2c 0\)\]{--tw-bg-opacity:1;background-color:rgb(255 0 0/var(--tw-bg-opacity))}.decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.box-decoration-slice{-webkit-box-decoration-break:slice;box-decoration-break:slice}.box-decoration-clone{-webkit-box-decoration-break:clone;box-decoration-break:clone}.bg-fixed{background-attachment:fixed}.bg-local{background-attachment:local}.bg-scroll{background-attachment:scroll}.bg-clip-border{background-clip:initial}.bg-clip-padding{background-clip:padding-box}.bg-clip-content{background-clip:content-box}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-repeat{background-repeat:repeat}.bg-no-repeat{background-repeat:no-repeat}.bg-repeat-x{background-repeat:repeat-x}.bg-repeat-y{background-repeat:repeat-y}.bg-repeat-round{background-repeat:round}.bg-repeat-space{background-repeat:space}.bg-origin-border{background-origin:border-box}.bg-origin-padding{background-origin:initial}.bg-origin-content{background-origin:content-box}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.object-none{-o-object-fit:none;object-fit:none}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-baseline{vertical-align:initial}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-top{vertical-align:text-top}.align-text-bottom{vertical-align:text-bottom}.align-sub{vertical-align:sub}.align-super{vertical-align:super}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal:ordinal}.ordinal,.slashed-zero{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero}.lining-nums{--tw-numeric-figure:lining-nums}.lining-nums,.oldstyle-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.tabular-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions}.diagonal-fractions,.stacked-fractions{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions}.text-\[\#336699\]\/\[\.35\]{color:#33669959}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.decoration-solid{text-decoration-style:solid}.decoration-double{text-decoration-style:double}.decoration-dotted{text-decoration-style:dotted}.decoration-dashed{text-decoration-style:dashed}.decoration-wavy{text-decoration-style:wavy}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.bg-blend-normal{background-blend-mode:normal}.bg-blend-multiply{background-blend-mode:multiply}.bg-blend-screen{background-blend-mode:screen}.bg-blend-overlay{background-blend-mode:overlay}.bg-blend-darken{background-blend-mode:darken}.bg-blend-lighten{background-blend-mode:lighten}.bg-blend-color-dodge{background-blend-mode:color-dodge}.bg-blend-color-burn{background-blend-mode:color-burn}.bg-blend-hard-light{background-blend-mode:hard-light}.bg-blend-soft-light{background-blend-mode:soft-light}.bg-blend-difference{background-blend-mode:difference}.bg-blend-exclusion{background-blend-mode:exclusion}.bg-blend-hue{background-blend-mode:hue}.bg-blend-saturation{background-blend-mode:saturation}.bg-blend-color{background-blend-mode:color}.bg-blend-luminosity{background-blend-mode:luminosity}.mix-blend-normal{mix-blend-mode:normal}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-screen{mix-blend-mode:screen}.mix-blend-overlay{mix-blend-mode:overlay}.mix-blend-darken{mix-blend-mode:darken}.mix-blend-lighten{mix-blend-mode:lighten}.mix-blend-color-dodge{mix-blend-mode:color-dodge}.mix-blend-color-burn{mix-blend-mode:color-burn}.mix-blend-hard-light{mix-blend-mode:hard-light}.mix-blend-soft-light{mix-blend-mode:soft-light}.mix-blend-difference{mix-blend-mode:difference}.mix-blend-exclusion{mix-blend-mode:exclusion}.mix-blend-hue{mix-blend-mode:hue}.mix-blend-saturation{mix-blend-mode:saturation}.mix-blend-color{mix-blend-mode:color}.mix-blend-luminosity{mix-blend-mode:luminosity}.mix-blend-plus-lighter{mix-blend-mode:plus-lighter}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a!important;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.outline-none{outline:2px solid #0000;outline-offset:2px}.outline{outline-style:solid}.outline-dashed{outline-style:dashed}.outline-dotted{outline-style:dotted}.outline-double{outline-style:double}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f)}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.sepia{--tw-sepia:sepia(100%)}.filter,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter-none{filter:none}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-grayscale{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter-none{-webkit-backdrop-filter:none;backdrop-filter:none}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.content-\[\'this-is-also-valid\]-weirdly-enough\'\]{--tw-content:"this-is-also-valid]-weirdly-enough";content:var(--tw-content)}.hover\:font-bold:hover{font-weight:700}.before\:hover\:text-center:hover:before,.hover\:before\:text-center:hover:before{content:var(--tw-content);text-align:center}.focus\:hover\:text-center:hover:focus,.hover\:focus\:text-center:focus:hover{text-align:center}@media (min-width:640px){.sm\:container{width:100%}@media (min-width:640px){.sm\:container{max-width:640px}}@media (min-width:768px){.sm\:container{max-width:768px}}@media (min-width:1024px){.sm\:container{max-width:1024px}}@media (min-width:1280px){.sm\:container{max-width:1280px}}@media (min-width:1536px){.sm\:container{max-width:1536px}}.sm\:underline{text-decoration-line:underline}}@media (prefers-color-scheme:dark){@media (min-width:1024px){.dark\:lg\:hover\:\[paint-order\:markers\]:hover{paint-order:markers}}}
@@ -6,11 +6,10 @@ "author": "Tim Izzo - 5ika",
"license": "MIT", "private": true, "scripts": { - "twd": "tailwindcss -i ./src/style.css -o ./build/style.css", - "build": "node bin/build" + "tw": "tailwindcss -i ./src/style.css -o ./build/style.css --minify", + "build": "./build.sh" }, "dependencies": { - "marked": "^4.1.1", "tailwindcss": "^3.1.8" } }
@@ -1,30 +0,0 @@
-> Dev & Ops đ§âđ» Open-Source đ Ăcologie đ± SobriĂ©tĂ© numĂ©rique âš - -Partisan d'un Internet ouvert, sobre et distribuĂ©, je dĂ©veloppe et met en place des outils digitaux par mon activitĂ© d'indĂ©pendant ainsi qu'au travers de l'entreprise auto-gouvernĂ©e [Octree](https://octree.ch). En parallĂšle, j'enseigne le mĂ©tier de dĂ©veloppeur/euse Ă [CREA GenĂšve](https://www.creageneve.com/bachelor/developpement-web-et-applications/). - -## Blog - -- [20.10.2022 - Quitter le pavĂ©](./posts/quitter-le-pave.html) -- [19.09.2022 - Confort et stabilitĂ©](./posts/confort-et-stabilite.html) -- [18.05.2022 - DĂ©connexion](./posts/deconnexion.html) -- [19.03.2022 - Pour un Web sain](./posts/pour-un-web-sain.html) -- [13.11.2021 - Vers l'Internet de demain](./posts/vers-l-internet-de-demain.html) - -## Projets - -- đ [Caroster](https://caroster.io/) <small>[Octree]</small> -- â»ïž [R-21](https://r-21.ch) <small>[Octree]</small> -- đą [EVOSPE](https://evospe.ch) <small>[Octree]</small> -- đłïž [Civic Echo](https://www.demaincestaujourdhui.online/) <small>[Octree]</small> -- đ [GenĂšve Open-Source](https://open-ge.ch/) -- đ [Denotion](https://github.com/5ika/denotion) -- đ [tipigee](https://github.com/5ika/tipigee) <small>_inactif_</small> - -## Talk - -- [21.02.2019 - Holacracy & Devops, Retour d'expeÌrience](https://www.youtube.com/watch?v=2_Cx-HvxVX0) - -## Contact - -- âïž [tim@5ika.ch](mailto:tim@5ika.ch) -- đ [Mastodon](https://fosstodon.org/web/@5ika)
@@ -1,48 +0,0 @@
-# Confort et stabilitĂ© - -> 19.09.22 - -Ă 25 ans, jâai eu la chance de rejoindre une Ă©quipe de 5 personnes avec qui jâai montĂ© une entreprise de dĂ©veloppement informatique. En se basant sur une courte expĂ©rience de lancement dâapplication ratĂ©, nous avons dĂ©cidĂ© que nous voulions profiter du caractĂšre multi-compĂ©tent de notre Ă©quipe pour gagner nos vies. Câest donc en aoĂ»t 2016 que nous avons lancĂ© [Octree](https://octree.ch), Ă lâorigine une boĂźte de dĂ©veloppement de sites Web sur mesure. - -Ătant toujours en Master, jâai vu lĂ une maniĂšre douce dâattaquer le monde du travail. Le fait de travailler dans ma propre entreprise mâa toujours sĂ©duit sans trop savoir pourquoi, probablement Ă cause du semblant de facilitĂ© que cela montre: pas de patron, pas besoin de chercher un job, grande libertĂ©, possibilitĂ© de sâenrichir rapidement sans trop dâeffort si les choses marchent. Ăvidemment, a posteriori, jâai bien eu le temps de me rendre compte que tout ça nâĂ©tait que des apparences. - -AprĂšs 3 ans de recherche de croissance et de stabilitĂ©, Octree a subi une grosse crise et perdu beaucoup de plumes. Nous sommes passĂ©s de 10 personnes Ă 4, tous Ă des taux de travail partiels pour pouvoir maintenir la boĂźte sous assistance respiratoire. - -De mon cĂŽtĂ©, jâai dĂ©butĂ© mon activitĂ© dâindĂ©pendant dĂ©but 2020, en plein Covid. LâidĂ©e Ă©tait de pouvoir appliquer lâensemble de mes compĂ©tences techniques. MĂȘme si je peux dire aujourdâhui que cela fonctionne, jâai clairement nĂ©gligĂ© les capacitĂ©s nĂ©cessaires en matiĂšre de prospection. - -CĂŽtĂ© Octree, la crise a Ă©tĂ© rĂ©vĂ©latrice et a lancĂ© beaucoup de questions: avec qui nous voulons collaborer ? Pour quels clients ? Que dĂ©fendons-nous ? Qui sommes-nous ? Quel avenir pour la boĂźte ? - -Notre gouvernance en [Holacracy](https://fr.wikipedia.org/wiki/Holacratie), fraĂźchement instaurĂ©e juste avant la crise, nous a apportĂ© les clĂ©s pour avancer sur ces questions. Le passage Ă lâHolacracy nous a amenĂ© Ă nous fixer une _raison dâĂȘtre_, câest-Ă -dire une formulation concrĂšte de ce que nous souhaitons poursuivre, le pourquoi de notre travail. Ă quatre, nous avons pris cela plus au sĂ©rieux quâalors et avons Ă©tabli la raison dâĂȘtre suivante, qui nous guide toujours: _CrĂ©er un cercle vertueux entre la sociĂ©tĂ© et la technologie au profit de lâHumain_. - -PoussĂ©s par cette raison dâĂȘtre, nous avons ainsi passĂ© 3 ans Ă reconstruire Octree pas aprĂšs pas. Lentement mais sĂ»rement. Nous avons engagĂ© des personnes en phase avec notre culture dâentreprise de plus en plus affirmĂ©e et nous avons embrassĂ© pleinement lâHolacracy et son potentiel. - -Aujourdâhui, les projets que nous dĂ©veloppons nâont rien Ă voir avec ceux des dĂ©buts. Nous travaillons avec des entitĂ©s publiques comme lâ[Ătat de GenĂšve](https://participer.ge.ch/), la [ville de Lausanne](https://participer.lausanne.ch/). Nous accompagnons des communes et des entreprises genevoises vers la transition numĂ©rique avec [R-21](https://r-21.ch/) et poussons nos propres applications comme [Caroster](https://caroster.io/). - -Nous sommes fiers de ce que nous faisons et de part les choix que lâĂ©quipe dâOctree a fait ces derniĂšres annĂ©es, nous nous sommes distinguĂ©s des entreprises conventionnelles: - -- Tout le monde touche le mĂȘme salaire (proportionnellement au taux de travail de chacun). Ce salaire est augmentĂ© progressivement avec le dĂ©veloppement de lâentreprise. -- Nous sommes une sĂ rl Ă but non lucratif. Octree fait notamment partie du [rĂ©seau de lâĂ©conomie sociale et solidaire](https://www.apres-ge.ch/). -- Personne ne travail Ă 100%. On a donc tous du temps Ă cĂŽtĂ© pour faire autre chose ou vivre, tout simplement. -- Nous ne souhaitons pas devenir une grosse entreprise. 15 personnes semblent ĂȘtre un maximum avant de scinder la boĂźte. -- La confiance et la communication plutĂŽt que la peur et lâautoritĂ©. - -Mais cela nâest pas âtout facileâ comme le jeune moi pouvait le penser 6 ans plus tĂŽt. Ces choix entraĂźnent des renoncements: - -- Avec un Master HES dans le domaine de lâIT, le salaire moyen en Suisse est deux fois plus grand que ce que je touche aujourdâhui en prenant en compte mon activitĂ© chez Octree, mes projets indĂ©pendants et les cours que je donne chez CREA. -- Il y a toujours une partie de mon cerveau dans un ou plusieurs projets en cours. La sĂ©paration entre le privĂ©e et le pro est fine, voire inexistante sur certaines pĂ©riodes. Pour quelquâun qui peine Ă gĂ©rer son stress comme moi, cela demande une autre forme de travail plus personnel. -- Le fait dâĂȘtre une trĂšs petite entreprise implique de lâinstabilitĂ©. Par exemple, un gros projet annulĂ© peut avoir un impact fort sur la santĂ© de la boĂźte. -- Il nâest pas possible de gĂ©rer âjuste son pâtit culâ. En plus de son travail quotidien propre au mĂ©tier, il faut parfois prendre la casquette de facilitateur, de secrĂ©taire, de RH, de mĂ©diateur, dâadministrateur, d'accompagnateur. Personne ne peux imposer de dĂ©cision aux autres et personne ne peut ĂȘtre virĂ©. - -Ainsi, rĂ©guliĂšrement jâen reviens Ă me poser ces questions: Est-ce que câest ce que je veux ? Est-ce que je nâaspire pas Ă plus de stabilitĂ© et de confort financiĂ© ? Est-ce que le choix de la facilitĂ© nâest pas finalement le bon choix ? - -Ă chaque fois, la rĂ©ponse est aisĂ©e: Non. - -Non car le salaire nâest quâune partie de ce que lâentreprise offre Ă ses employĂ©-e-s. Octree, comme les autres boĂźtes auto-gouvernĂ©es, offre tout un panel de choses qui ne seraient pas possibles dans une entreprise conventionnelle: je fais un travail qui a du sens, je prends moi-mĂȘme les dĂ©cisions qui concernent mon travail, jâai la possibilitĂ© dâadapter ma place au sein de lâentreprise, je peux voir les effets de mon travail et jâen rĂ©cupĂšre les fruits de maniĂšre Ă©quitable. Je travail avec des personnes passionnĂ©es, qui veulent sâimpliquer et en qui jâai confiance. - -Non car mĂȘme si je cogite continuellement sur des projets, câest avant tout parce que je suis passionnĂ© par ce que je fais et jâai du plaisir Ă rĂ©flĂ©chir quand mes pensĂ©es sont maĂźtrisĂ©es. Je cherche constamment comment amĂ©liorer les choses, les processus, le code, la qualitĂ© du produit, etc.. - -Non car nous dĂ©veloppons des projets qui ont du sens et qui rĂ©pondent Ă un besoin rĂ©el plutĂŽt quâĂ vendre et faire du chiffre. Si un produit est pertinent et est dĂ©veloppĂ© correctement, il peut devenir un vrai outil et a peu de chance dâĂȘtre avortĂ©. - -Non car je crois Ă la puissance de la communication et de la confiance. Dans les entreprises conventionnelles, si vous ne faites pas du bon travail ou si vous ne faites pas vos 8h par jour, vous pouvez ĂȘtre virĂ©. Quand votre supĂ©rieur-e vous demande quelque chose, vous devez le faire, mĂȘme si vous trouvez cela stupide ou nâĂȘtes pas dâaccord. On vous engage pour un job fixe correspondant Ă un cahier des charges et vous ĂȘtes cadrĂ©s dans ce que vous pouvez apporter Ă lâentreprise et ce quâelle peut vous donner en retour. Vous voulez faire plus ? Vous voulez faire mieux ? Non, vous remplissez votre cahier des charges ou vous partez. - -Renoncer aux quatre points Ă©voquĂ©s plus haut nâest pas un problĂšme car il y a bien plus Ă gagner. Les obligations de la vie et la pression sociale me ramĂšnent toujours Ă ce choix et câest avec fiertĂ© que je continue Ă crĂ©er les choses plutĂŽt quâĂ les subir.
@@ -1,29 +0,0 @@
-# DĂ©connexion - -> 18.05.2022 - -Il y a 3 ans, jâai dĂ©cidĂ© de me couper des rĂ©seaux sociaux alors que jâen Ă©tait totalement addict. - -Je me suis inscrit sur Facebook en 2007 quand le rĂ©seau commençait tout juste Ă devenir hype. AprĂšs MSN oĂč je retrouvais mes potes le soir pour discuter de tout et surtout de rien, jâĂ©tais content dâavoir une plateforme pour partager des publications dâado mystĂ©rieux et profond Ă de plus en plus de gens depuis un bureau chez mes parents. Est ensuite arrivĂ© Instagram oĂč, comme les autres de mon Ăąge, jâai pu laisser exprimer ma fibre artistique en publiant des photos pour montrer comment ma vie elle est bien. - -Avec mon premier smartphone, jâai pu emmener mon rĂ©seau de âpotesâ nâimporte oĂč. Toujours dans la poche, je nâavais plus besoin dâattendre aprĂšs lâĂ©cole pour me tenir aux courants des derniĂšres news trĂ©pignantes des autres. Du bout de mes doigts, je pouvais contacter nâimporte qui pour lui dire nâimporte quoi, depuis nâimporte oĂč. CâĂ©tait beau ! - -Les annĂ©es passantes et la maturitĂ© grandissante, jâai peu Ă peu pris du recul sur mon utilisation des rĂ©seaux sociaux. MalgrĂ© une constante connexion avec mes pairs, nos conversations nâavaient pas vraiment de substance. Les quelques fois oĂč jâai vraiment utilisĂ© Facebook les derniĂšres annĂ©es, câĂ©tait pour ĂȘtre tenu aux courants de certains Ă©vĂ©nements et de qui y allait. - -Pourtant, comme beaucoup dâautres, je me suis cachĂ© derriĂšre la grande excuse âOui mais ça me permet de rester en contact avec dâanciens potes ou personnes que je ne vois pas souventâ. Il faut arrĂȘter de se mentir: Non, ce nâest pas vrai. Je nâai pas besoin dâavoir un canal de discussion constant avec des gens avec qui je parle une fois tous les 10 ans. Si je veux vraiment les contacter et maintenir une relation avec eux, je les appelle et je les vois. - -Avec le temps, jâai rĂ©alisĂ© que je nâavais pas besoin dâavoir 500 amis potentiels car je nâaurais de toute façon pas assez de temps pour tous. Une vraie relation entre deux personnes sâentretient, prend du temps et change avec le temps. DâaprĂšs lâanthropologue Robin Dunbar, nous sommes incapables de tenir une relation humaine stable avec plus de 150 personnes (en moyenne). Câest une limite de notre cerveau ! Dans ce cas, pas besoin dâun outil pour gĂ©rer ses relations comme un troupeau. - -En aoĂ»t 2018, jâai donc sautĂ© le pas: jâai supprimĂ© mes comptes Facebook, Instagram et Twitter. Et franchement, ça a Ă©tĂ© horrible. - -Du jour au lendemain, je me suis senti totalement dĂ©connectĂ©. Non pas dâInternet mais de mes amis et des diffĂ©rents groupes auxquelles jâappartenais. HabituĂ© Ă ĂȘtre toujours un peu au courant de tout grĂące aux plateformes en ligne, jâai dĂ©couvert que je devais maintenant aller Ă la rencontre de mes amis pour savoir sâil se passait des choses, sâil y avait un anniversaire, si un tel allait Ă un concert ou si tel groupe dâamis se retrouvait pour un barbecue. Pour un introverti comme moi, cela demande beaucoup dâeffort et dâinconfort. Du jour au lendemain, jâai coupĂ© court Ă des centaines de ârelationsâ que jâavais alors sur Facebook et Instagram. - -Puis, de semaine en semaine, jâai repris contact avec certains amis en les contactant directement. En ayant des discussions avec un dĂ©but et une fin, jâai redĂ©couvert certaines personnes et jâai construit des relations un peu plus fortes avec un nombre plus restreint dâamis. Jâai aujourdâhui 23 personnes que je contacte rĂ©guliĂšrement, que jâapprĂ©cie et avec qui je passe des moments vrais et sincĂšres (en dehors de la famille bien sĂ»r). - -Cela reste difficile dâĂȘtre dĂ©connectĂ© des diffĂ©rentes plateformes. En arrĂȘtant les rĂ©seaux dââamisâ, jâai un peu compensĂ© avec LinkedIn pendant quelque temps. MĂȘme si je suis encore un peu prĂ©sent sur ce rĂ©seau professionnel, jâai remarquĂ© que je nâai rien Ă y partager (je ne fais que repartager ce que postent les entitĂ©s dont je fais partie mais le monde peut sâen passer) et que les quelques rares informations intĂ©ressantes sont perdues dans un ocĂ©an dâinformation inutile et de marketing. - -Finalement, tout ce que je peux trouver dâintĂ©ressant sur ces rĂ©seaux se trouve aussi ailleurs sur le Web et je prĂ©fĂšre dĂ©sormais utiliser un agrĂ©gateur qui me condense les publications des sites que je suis sans le superflu autour. - -Je ne passe plus mes journĂ©es Ă scroller dans la vie des autres mais jâai dĂ©sormais tout le temps de rĂ©flĂ©chir et de me concentrer sur des choses qui valent la peine, les choses de la vraie vie, celle qui est palpable. - -La dĂ©connexion nâa pas Ă©tĂ© simple et la tentation de revenir sur les plateformes sociales, les anciennes comme les nouvelles, ne part pas vraiment. Mais quand on rĂ©ussit Ă construire de vraies relations, il devient Ă©vident quâon nâa pas besoin de Facebook, Instagram, TikTok et leurs compĂšres.
@@ -1,29 +0,0 @@
-# Pour un Web sain - -> 19.03.2022 - -Le Web que nous utilisons aujourdâhui a dĂ©viĂ©. Il est trĂšs loin du projet que son crĂ©ateur avait en tĂȘte lors de sa mise en place au dĂ©but des annĂ©es â90. Ă lâorigine, le Web devait ĂȘtre un rĂ©seau pleinement ouvert, dĂ©centralisĂ© et accessibles Ă toutes et tous sans distinction. - -Son objectif premier Ă©tait de faciliter le partage dâinformation. Pas de froufrous, de cookies, de pubs, de pop-ups, de banniĂšres ou de scroll infini. - -Juste de lâinformation pure, du texte et quelques images. - -Pas un systĂšme omniprĂ©sent et addictif se nourrissant de notre temps, de notre argent et de notre esprit. - -Juste un outil interconnectant les humains du monde et leurs idĂ©es. - -En 30 ans, nous avons voulu toujours en demander plus au Web en lui donnant une place et des moyens toujours plus importants jusquâĂ arriver Ă une situation malsaine. - -De par mon mĂ©tier et ma passion, je âvisâ sur le Web chaque jour. Câest en agissant sur le Web que je gagne de lâargent et que jâaime passer du temps. Je devrais donc ĂȘtre un ambassadeur du âtout digitalâ, dĂ©fenseur de lâaccroissement de la connexion et du dĂ©bit. - -MalgrĂ© 15 annĂ©es dĂ©diĂ©es Ă lâinformatique, jâai peur du Web dâaujourdâhui. Dans mon expĂ©rience de vie et dans mon entourage, je peux observer chaque jour ce que la sur-connexion peut crĂ©er en nous. La dĂ©pendance qui nous attache Ă un Ă©cran, toujours dans lâattente dâavoir une petite pastille rouge qui âpopâ avec lâespoir dâavoir Ă©tĂ© considĂ©rĂ© par dâautres. Le sentiment dâapathie qui nous envahit quand le moindre moment oĂč notre cerveau nâa rien Ă faire nous sortons notre tĂ©lĂ©phone pour scroller bĂȘtement en recherche de âquelque chose permettant de donner ou recevoir de lâattentionâ. Et surtout, le sentiment de solitude viscĂ©rale qui nous prend alors que nous sommes liĂ©s au monde entier grĂące au truc dans notre poche. - -Jâai eu la chance dâavoir passĂ© mon enfance avant que les chaĂźnes ne se mettent en place. Sur lâordinateur familial, nous devions partager le temps dâĂ©cran et surtout, le temps de connexion au rĂ©seau de tĂ©lĂ©com car Ă cette Ă©poque, pas si lointaine, nous ne pouvions pas encore utiliser le tĂ©lĂ©phone et Internet en mĂȘme temps. - -CâĂ©tait une Ăšre oĂč le Web Ă©tait simple. On voyait quelques sites extravagants pleins de couleurs mais les informations quâon trouvait Ă©taient rĂ©flĂ©chies et facile dâaccĂšs. Il nâĂ©tait pas nĂ©cessaire dâen mettre plein la vue avec des animations et des contenus de remplissage optimisĂ©s pour le SEO. - -Pourtant, ce qui faisait le Web dâhier nâa pas disparu. Les technologies sont toujours lĂ et ont peu voir pas changĂ©es (HTML, HTTP,...). Nous avons juste rajoutĂ© des couches de merdes dessus pour mieux sucer les esprits et faire du business. - -Car oui, quand nous utilisons le Web moderne, nous permettons Ă des entreprises de sâenrichir. Et cela mĂȘme si nous ne dĂ©boursons pas un sou. _Si câest gratuit, câest toi le produit._ Ce nâest pas grĂące Ă des dons que Facebook et Google font partie des boites les plus riches et puissantes de la planĂšte. - -Je ne crois pas quâil soit envisageable de retourner au Web des dĂ©buts mais il est possible nĂ©anmoins, de maniĂšre individuelle, de changer la maniĂšre dont on sâen sert pour revenir Ă une utilisation saine, respectueuse de soi-mĂȘme et des autres humains. Câest le chemin que je souhaite raconter Ă travers ce blog.
@@ -1,52 +0,0 @@
-# Quitter le pavĂ© - -> 20.10.2022 - -Depuis que je me rends compte des dĂ©rives du Web et des gros problĂšmes concernant la -consommation d'Ă©nergie de nos outils numĂ©riques ainsi que leurs effets sur notre mode de vie, -je cherche comment m'extirper du Big Web (Google, Facebook, Linkedin, Twitter,...). -J'essaye rĂ©guliĂšrement des technologies alternatives mais il n'est pas Ă©vident de sauter le pas et de changer ses habitudes -d'utilisation d'Internet. - -Il y a 4 ans, dans un Ă©lan de [digital minimalism](https://www.calnewport.com/books/digital-minimalism/), j'ai retirĂ© -de mon smartphone **tout ce qui a un scroll infini**. Ciao Facebook, Instagram et Twitter. -L'objectif Ă©tait de retrouver un tĂ©lĂ©phone *outil* plutĂŽt qu'un tĂ©lĂ©phone *passe-temps*. -Et cette rĂšgle d'or tient toujours pour moi aujourd'hui. -J'ai gagnĂ© Ă©normĂ©ment de temps, de focus et de journĂ©es de batterie (de maniĂšre non nĂ©gligeable). - -J'ai ensuite remplacĂ© les apps "qui se scroll" par [Feedly](https://feedly.com/) et [Pocket](https://getpocket.com/). - -Le premier me permet de suivre des fils d'information sĂ©lectionnĂ©s avec soin. -Dans ma liste des "feeds", j'ajoute les sites d'information que je consultait avant un par un ainsi que -plusieurs blogs techniques que j'apprĂ©cie. -GrĂące Ă Feedly, je peux aussi faire ma veille technique en suivant les infos des diffĂ©rentes stacks technologiques -que j'utilise ou qui m'intĂ©ressent. -Le gros avantage de cette app c'est qu'elle affiche un nombre limitĂ© d'Ă©lĂ©ments chaque jour, sĂ©parĂ©s en pages finies. -Ainsi, je passe une dizaine de minutes par jour sur l'app (si je ne trouve pas d'article intĂ©ressant) et je n'ai -plus de raison d'y revenir plusieurs fois dans la mĂȘme journĂ©e. - -Quand je trouve un article intĂ©ressant sur Feedly ou en naviguant sur le Web mais que je n'ai pas le temps ou -l'envie de le lire sur le moment, je l'enregistre dans Pocket. GrĂące Ă une extension Firefox, -je peux aussi enregistrer des articles depuis mon ordinateur et les retrouver plus tard sur mon tĂ©lĂ©phone. -Lorsque j'ai un long temps Ă attendre, par exemple dans les transports, ou simplement que j'ai du temps -Ă disposition pour lire, j'ouvre Pocket et je prends un article qui me tente. -L'app fonctionne en mode offline: une fois que les articles sont tĂ©lĂ©chargĂ©s sur le tĂ©lĂ©phone, -plus besoin de connexion pour lire les articles. -Je peux aussi synchroniser ma liseuse Ă©lectronnique avec Pocket mais j'utilise ce fonctionnement uniquement -pour les articles particuliĂšrement long. - -GrĂące Ă ces deux apps, j'ai rĂ©ussi Ă reprendre la main sur mon smartphone: ce n'est plus lui qui me contrĂŽle -Ă coups de notifications et de fils d'actualitĂ©s interminables mais c'est moi qui choisi le contenu que je -souhaite lire et les moments d'utilisation de l'Ă©cran trouvent une fin naturelle une fois qu'il n'y a plus rien Ă lire. - -AprĂšs quelques annĂ©es (4 ans dĂ©jĂ !), les bienfaits sont clairs: - -- Je lis bien plus d'articles construits et intĂ©ressants, notamment faits par des petits bloggueurs plutĂŽt que des grandes corporations -- J'ai rĂ©duit un peu ma consommation Ă©nergĂ©tique liĂ©e au numĂ©rique (mais sur ce point, la route est encore longue) -- J'ai l'impression d'aller au fond des sujets, pas juste creuser la surface -- J'ai rĂ©ussi Ă surmonter [la peur de rĂąter quelque chose](https://fr.wikipedia.org/wiki/Syndrome_FOMO) (mĂȘme si j'ai bien galĂ©rĂ© au dĂ©but) -- J'ai du temps pour rĂ©flechir car je ne dĂ©gaine plus constament mon smartphone Ă chaque petit moment d'ennui. Prochain truc Ă rĂ©gler: Organiser toutes mes notes. - -Ces nouvelles habitudes ont Ă©tĂ© un premier Ă©lan vers plus de sobriĂ©tĂ© numĂ©rique. -Maintenant que c'est bien en place, je continue Ă rechercher d'autres maniĂšres de faire et Ă essayer de les transmettre. -Actuellement, je suis en train de dĂ©couvrir le protocole Gemini et le Geminispace. Un article suivra sur le sujet.
@@ -1,37 +0,0 @@
-# Vers l'Internet de demain - -> 13.11.2021 - -Commençons avec une vĂ©ritĂ© Ă©tablie: notre utilisation actuelle de l'informatique et d'Internet engendre une consommation Ă©nergĂ©tique dĂ©mentielle et bien supĂ©rieure Ă ce que les ressources de notre planĂšte peuvent satisfaire. - -Dans ce domaine, l'Histoire rĂ©cente nous montre deux choses : - -- Notre sociĂ©tĂ© globalisĂ©e et interconnectĂ©e peut ĂȘtre mise Ă mal par des impacts survenant trĂšs loin de chez nous. -- Nous sommes aujourd'hui totalement dĂ©pendant d'Internet, dans nos vies privĂ©es comme professionnelles. - -D'un point de vue un peu fataliste, nous ne pouvons lutter contre cela car Internet fait Ă©cho Ă notre besoin humain primitif de lien social. Pire que cela, les rĂ©seaux sociaux sont devenus le moyen principal de rĂ©pondre Ă ce besoin pour une bonne partie de la planĂšte. Essayez de vous dĂ©brancher pendant quelques semaines de toutes les plateformes sociales en ligne et vous verrez que cela donne un sentiment de solitude, de mise Ă l'Ă©cart. L'impression de lutter contre son instinct. - -ParallĂšlement Ă cela, Internet (et l'informatique de maniĂšre gĂ©nĂ©rale) repose sur l'Ă©lectronique elle mĂȘme nĂ©cessitant l'usage de l'Ă©lectricitĂ©, une source d'Ă©nergie artificielle (dans la maniĂšre dont on s'en sert). Ainsi, il est absolument impossible d'obtenir un Internet avec une empreinte Ă©cologique nulle, quoique l'on fasse. - -ConsidĂ©rant cela, comment peut-on utiliser Internet sans accentuer les pressions Ă©cologiques que nous faisons peser sur notre planĂšte ? Est-ce que la seule solution n'est-elle pas de cesser d'utiliser Internet et de repenser nos vies en profondeur au plus vite ? - -Je ne pense pas qu'il faille, ni mĂȘme que ce soit possible, que l'on se passe aujourd'hui d'Internet. Nous en avons besoin. C'est devenu une nĂ©cessitĂ© pour nos vies et on ne peut revenir en arriĂšre. Mais je pense que l'on peut changer notre conception et notre utilisation d'Internet vers plus de sobriĂ©tĂ© Ă©nergĂ©tique. - -Nous avons tendance Ă l'oublier, pris entre les milliers d'applications que l'on utilise, mais Internet est avant tout un **outil**. Il existe parce que l'on a besoin de lui, il nous est _utile_. On ne vit pas pour crĂ©er Internet, on crĂ©e Internet pour pouvoir faciliter nos vies. Et son utilitĂ© est qu'il nous permet de communiquer entre humains, d'Ă©changer de l'information. - -Aujourd'hui, cet notion d'outil a mutĂ© vers une utilitĂ© qui serait plutĂŽt "faire en sorte que des entreprises puissent se faire de l'argent en atteignant chaque humain". Mais Ă titre individuel, en tant qu'_humain_, a-t-on vraiment besoin que l'on nous indique ce que l'on veut acheter? ce que l'on doit _liker?_ avec qui l'on doit communiquer? comment les personnes cĂ©lĂšbres vivent leur vie? comment les chats sont trop mignons ? - -Dans la rĂ©alitĂ© des choses, plutĂŽt non. Une majoritĂ© de ce que l'on Ă©change sur le Web est destinĂ© Ă des humains qui sont gĂ©ographiquement proches de nous: communiquer avec ses proches ou ses amis, chercher des informations sur une manifestation, rĂ©server un restaurant ou une place de cinĂ©, partager des photos, des articles... - -Pourtant, avec les applications et services en ligne que nous utilisons chaque jour, les donnĂ©es transitent Ă travers des macro-noeuds Ă l'autre bout du globe qui concentrent tout le trafic et le redistribue (Google, Facebook,...). Quand vous envoyez un message Ă votre voisin par Whatsapp, le message passent par un certains nombre de routeurs jusqu'Ă atteindre un serveur aux Ătats-unis pour ĂȘtre traitĂ© puis refais le chemin en sens inverse jusqu'Ă l'ordinateur de votre voisin. Au passage, le message s'alourdit d'un peu de publicitĂ© et de scripts analysant votre utilisation du service. - -Pourquoi ne pas lui envoyer directement ? Pourquoi consommer une grande quantitĂ© d'Ă©nergie pour faire un aller-retour Ă travers le monde plutĂŽt que de prendre le chemin le plus court sur le rĂ©seau vers votre voisin ? - -Si on considĂšre qu'Internet est un outil pour Ă©changer essentiellement des donnĂ©es avec des gens gĂ©ographiquement proches de nous et de temps en temps des gens plus Ă©loignĂ©s, nous pourrions considĂ©rer un Internet diffĂ©rent: - -- Un rĂ©seau plus lent mais plus sĂ»rs, favorisant la confidentialitĂ©, l'authenticitĂ© et l'intĂ©gritĂ© des donnĂ©es Ă©changĂ©es plutĂŽt que la vitesse. Techniquement, cela nous permettrait de mettre en place des rĂ©seaux longues distances, plus universellement accessibles. -- Un rĂ©seau pas disponible 100% du temps mais peu consommateur en Ă©nergie. Techniquement, on pourrait ainsi envisager de l'alimenter avec de l'Ă©nergie solaires, Ă©olienne, voir produite par la force humaine. - -Depuis maintenant 30 ans, dans la quasi-totalitĂ© des pays du monde, nous avons des Ă©quipements de tĂ©lĂ©communication puissants capables de relayer des messages efficacement. Une connexion WiFi ou Bluetooth peut transmettre des messages entre deux systĂšmes distants d'une centaine de mĂštres et on a dĂ©jĂ ce qu'il faut dans nos tĂ©lĂ©phones. Il y a Ă©galement les rĂ©seaux LoRaWAN, maintenant prĂ©sents un peu partout et dĂ©diĂ©s Ă l'Internet des Objets, qui permettent de transmettre des (petits) messages sur des dizaines de kilomĂštres. Les rĂ©seaux cellulaires (2G, 3G, 4G,...) correspondent aussi Ă des systĂšmes de tĂ©lĂ©communications omniprĂ©sents et dĂ©jĂ compatibles avec ce que l'on a dans la poche. - -En se basant sur les rĂ©seaux dĂ©jĂ existants proposĂ©s par nos fournisseurs d'accĂšs Internet, il existe aujourd'hui un nombre croissants de technologies et de protocoles nous permettant de nous affranchir des macro-noeuds et retrouver le fonctionnement d'Internet tel qu'il a Ă©tĂ© pensĂ© il y a plus de 30 ans. La condition pour que cet Internet neutre et dĂ©centralisĂ© puisse prendre sa place dĂ©pend de chaque utilisateur: si vous utilisez un service centralisĂ© comme Facebook ou Google, alors ce service (et l'entreprise derriĂšre) gagne en puissance. Mais si vous utilisez des technologies dĂ©centralisĂ©es voir distribuĂ©es alors vous donner de la puissance Ă ces alternatives et vous participez Ă la mise en place de l'Internet de demain.
@@ -0,0 +1,124 @@
+<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <link + rel="icon" + href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" + /> + <link href="/style.css" rel="stylesheet" /> + <link + href="/posts/atom-html.xml" + type="application/atom+xml" + rel="alternate" + title="5ika's posts" + /> + <link + href="/posts/rss-html.xml" + type="application/rss+xml" + rel="alternate" + title="5ika's posts" + /> + <title>Tim Izzo @5ika.ch</title> + </head> + <body> + <main> + <h1 class="mb-8">Tim Izzo @<a href="/">5ika.ch</a></h1> + <blockquote> + <p>Dev & Ops đ§âđ» Open-Source đ Ăcologie đ± SobriĂ©tĂ© numĂ©rique âš</p> + </blockquote> + <p> + Partisan d'un Internet ouvert, sobre et distribuĂ©, je dĂ©veloppe et + met en place des outils digitaux par mon activitĂ© d'indĂ©pendant + ainsi qu'au travers de l'entreprise auto-gouvernĂ©e + <a href="https://octree.ch" target="_blank" title="null">Octree</a>. En + parallĂšle, j'enseigne le mĂ©tier de dĂ©veloppeur/euse Ă + <a + href="https://www.creageneve.com/bachelor/developpement-web-et-applications/" + target="_blank" + title="null" + >CREA GenĂšve</a + >. + </p> + <h2 id="blog">Blog</h2> + <ul> + $POSTS_LIST + </ul> + <h2 id="projets">Projets</h2> + <ul> + <li> + đ + <a href="https://caroster.io/" target="_blank" title="null" + >Caroster</a + > + <small>[Octree]</small> + </li> + <li> + â»ïž <a href="https://r-21.ch" target="_blank" title="null">R-21</a> + <small>[Octree]</small> + </li> + <li> + đą + <a href="https://evospe.ch" target="_blank" title="null">EVOSPE</a> + <small>[Octree]</small> + </li> + <li> + đłïž + <a + href="https://www.demaincestaujourdhui.online/" + target="_blank" + title="null" + >Civic Echo</a + > + <small>[Octree]</small> + </li> + <li> + đ + <a href="https://open-ge.ch/" target="_blank" title="null" + >GenĂšve Open-Source</a + > + </li> + <li> + đ + <a + href="https://github.com/5ika/denotion" + target="_blank" + title="null" + >Denotion</a + > + </li> + <li> + đ + <a href="https://github.com/5ika/tipigee" target="_blank" title="null" + >tipigee</a + > + <small><em>inactif</em></small> + </li> + </ul> + <h2 id="talk">Talk</h2> + <ul> + <li> + <a + href="https://www.youtube.com/watch?v=2_Cx-HvxVX0" + target="_blank" + title="null" + >21.02.2019 - Holacracy & Devops, Retour d'expeÌrience</a + > + </li> + </ul> + <h2 id="contact">Contact</h2> + <ul> + <li> + âïž <a href="mailto:tim@5ika.ch" target="" title="null">tim@5ika.ch</a> + </li> + <li> + đ + <a href="https://fosstodon.org/web/@5ika" target="_blank" title="null" + >Mastodon</a + > + </li> + </ul> + </main> + </body> +</html>
@@ -8,6 +8,18 @@ rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>đŠ</text></svg>" /> <link href="/style.css" rel="stylesheet" /> + <link + href="/posts/atom-html.xml" + type="application/atom+xml" + rel="alternate" + title="5ika's posts" + /> + <link + href="/posts/rss-html.xml" + type="application/rss+xml" + rel="alternate" + title="5ika's posts" + /> <title>$TITLE</title> </head> <body>
@@ -213,17 +213,12 @@ version "2.0.6"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== -marked@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.1.1.tgz#2f709a4462abf65a283f2453dc1c42ab177d302e" - integrity sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw== - merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==@@ -380,9 +375,9 @@ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== tailwindcss@^3.1.8: - version "3.2.0" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.0.tgz#0164a930645e7e1df301df1e9d434a52602c918d" - integrity sha512-ARh/W0uH5UlWIC2nn02V0+5fyF0k6qZliyt4QYic2upOhPUE/Spu1EURNc9txJ3+4j8OEmdigqfDpw4d2tA4vA== + version "3.2.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.1.tgz#1bd828fff3172489962357f8d531c184080a6786" + integrity sha512-Uw+GVSxp5CM48krnjHObqoOwlCt5Qo6nw1jlCRwfGy68dSYb/LwS9ZFidYGRiM+w6rMawkZiu1mEMAsHYAfoLg== dependencies: arg "^5.0.2" chokidar "^3.5.3"@@ -394,6 +389,7 @@ fast-glob "^3.2.12"
glob-parent "^6.0.2" is-glob "^4.0.3" lilconfig "^2.0.6" + micromatch "^4.0.5" normalize-path "^3.0.0" object-hash "^3.0.0" picocolors "^1.0.0"