diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..b6e5fd1
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,20 @@
+Options +FollowSymLinks
+RewriteEngine On
+RewriteRule ^guide/?$ guide.php
+RewriteRule ^guide/installer-minetest/?$ guide/installer-minetest.php
+RewriteRule ^guide/se-deplacer-dans-minetest/?$ guide/se-deplacer-dans-minetest.php
+RewriteRule ^guide/constuire-inventaire-minetest/?$ guide/constuire-inventaire-minetest.php
+RewriteRule ^guide/monnaie-argent-minetest/?$ guide/monnaie-argent-minetest.php
+RewriteRule ^guide/discuter-minetest-mumble/?$ guide/discuter-minetest-mumble.php
+RewriteRule ^guide/rejoindre-serveur-minetest/?$ guide/rejoindre-serveur-minetest.php
+RewriteRule ^guide/panneaux-minetest/?$ guide/panneaux-minetest.php
+RewriteRule ^guide/boite-aux-lettres-minetest/?$ guide/boite-aux-lettres-minetest.php
+RewriteRule ^guide/boutique-g1-minetest/?$ guide/boutique-g1-minetest.php
+
+RewriteRule ^soutenir/?$ soutenir.php
+RewriteRule ^developper/?$ developper.php
+
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^thumbs/([0-9]+)w/(.*\.(jpg|jpeg|png))$ thumb.php?filename=$2&thumbWidth=$1
+
+
diff --git a/Minetest_logo-240px.png b/Minetest_logo-240px.png
new file mode 100644
index 0000000..e80d222
Binary files /dev/null and b/Minetest_logo-240px.png differ
diff --git a/Minetest_logo.png b/Minetest_logo.png
new file mode 100644
index 0000000..79801ee
Binary files /dev/null and b/Minetest_logo.png differ
diff --git a/config.php b/config.php
new file mode 100644
index 0000000..41cd25b
--- /dev/null
+++ b/config.php
@@ -0,0 +1,136 @@
+ [
+
+ 'w' => [400, 620],
+
+ 'breakpoints' => '
+ (max-width: 42.249rem) 400px,
+ (max-width: 55.999rem) 620px,
+ 400px
+ '
+ ],
+
+ 'col_3_2_1' => [
+
+ 'w' => [408, 628],
+
+ 'breakpoints' => '
+ (max-width: 42.249rem) 408px,
+ (max-width: 55.999rem) 628px,
+ 408px
+ ',
+ ],
+
+ 'col_2_1_bordered' => [
+
+ 'w' => [400, 620, 840],
+
+ 'breakpoints' => '
+ (max-width: 42.249rem) 400px,
+ (max-width: 55.999rem) 620px,
+ (max-width: 83.490rem) 840px,
+ 620px
+ ',
+ ],
+
+ 'col_2_1' => [
+
+ 'w' => [408, 628, 848],
+
+ 'breakpoints' => '
+ (max-width: 42.249rem) 408px,
+ (max-width: 55.999rem) 628px,
+ (max-width: 83.490rem) 848px,
+ 628px
+ ',
+ ],
+
+ 'article_full_width' => [
+
+ 'w' => [392, 502, 612, 832, 942],
+
+ 'breakpoints' => '
+ (max-width: 35.374rem) 392px,
+ (max-width: 42.249rem) 502px,
+ (max-width: 55.999rem) 612px,
+ (max-width: 83.499rem) 832px,
+ 942px
+ ',
+ ],
+
+ 'gallery_3_2_1' => [
+
+ 'w' => [502, 298, 267, 303],
+
+ 'breakpoints' => '
+ (max-width: 42.249rem) 502px,
+ (max-width: 55.999rem) 298px,
+ (max-width: 84.499rem) 267px,
+ 303px
+ ',
+ ],
+
+ 'gallery_2_1' => [
+
+ 'w' => [612, 408, 463],
+
+ 'breakpoints' => '
+ (max-width: 55.999rem) 612px,
+ (max-width: 84.499rem) 408px,
+ 463px
+ ',
+ ],
+];
+
+$thumbExt = '.jpg';
+
+
+function image ($filename, $alt, $layout) {
+
+ global $thumbExt;
+
+ $imgName = substr($filename, 0, strrpos($filename, '.'));
+
+ $out = '';
+
+ $out .= '
+image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/css/ciel-etoile-orig.png b/css/ciel-etoile-orig.png
new file mode 100644
index 0000000..c54d7b5
Binary files /dev/null and b/css/ciel-etoile-orig.png differ
diff --git a/css/ciel-etoile.png b/css/ciel-etoile.png
new file mode 100644
index 0000000..30d36dd
Binary files /dev/null and b/css/ciel-etoile.png differ
diff --git a/css/cols.css b/css/cols.css
new file mode 100644
index 0000000..d51945e
--- /dev/null
+++ b/css/cols.css
@@ -0,0 +1,65 @@
+:root {
+
+ font-size: 16px;
+
+ --col-width: 4.875rem;
+ --col-gap: 2rem;
+ --box-border-width: 0.25rem;
+
+}
+
+@media screen and (min-width: 28.5rem) {
+
+ :root {
+
+ --page-col-nb: 4;
+
+ --benefits-col-nb: 4;
+ --worlds-col-nb: 4;
+ --guides-col-nb: 4;
+ }
+
+}
+
+
+@media screen and (min-width: 42.25rem) {
+
+ :root {
+
+ --page-col-nb: 6;
+
+ --benefits-col-nb: 6;
+ --worlds-col-nb: 6;
+ --guides-col-nb: 6;
+ }
+
+}
+
+
+
+@media screen and (min-width: 56rem) {
+
+ :root {
+
+ --page-col-nb: 8;
+
+ --benefits-col-nb: 4;
+ --worlds-col-nb: 8;
+ --guides-col-nb: 4;
+ }
+}
+
+
+@media screen and (min-width: 83.5rem) {
+
+ :root {
+
+ --page-col-nb: 12;
+ --benefits-col-nb: 4;
+ --worlds-col-nb: 6;
+ --guides-col-nb: 4;
+ }
+
+}
+
+
diff --git a/css/decoration-donors.css b/css/decoration-donors.css
new file mode 100644
index 0000000..ca1be95
--- /dev/null
+++ b/css/decoration-donors.css
@@ -0,0 +1,59 @@
+/* ------------------------------------------ DONORS ------------------------------------------ */
+
+
+.donorsList {
+
+ list-style: none;
+ font-family: sans-serif;
+}
+
+
+.donorsList li {
+
+ background-color: white;
+ box-shadow: -0.125rem 0.125rem 0.75rem hsla(0, 0%, 0%, 0.2);
+ border-style: solid;
+ border-color: transparent;
+
+ position: relative;
+}
+
+.donorsList li:before {
+
+ position: absolute;
+ top: 0.125rem;
+ content: ".";
+ color: transparent;
+ background-image: url("sprites/heart.png");
+ background-size: cover;
+ background-repeat: no-repeat;
+ right: 0.125rem;
+
+ width: 1rem;
+ height: 1rem;
+
+}
+
+
+.donorsList li a {
+
+ color: hsl(0, 0%, 10%);
+ text-decoration: none;
+}
+
+
+.donorsList li a img {
+
+ background: black;
+}
+
+
+
+.donorsList li a .name {
+
+ font-weight: bold;
+ background: white;
+ color: #1d1d1d;
+}
+
+
diff --git a/css/decoration-home.css b/css/decoration-home.css
new file mode 100644
index 0000000..cf80094
--- /dev/null
+++ b/css/decoration-home.css
@@ -0,0 +1,208 @@
+:root {
+
+ --navy: #15262b;
+}
+
+#guides > li a dfn span,
+body.home main h2 > span {
+
+ display: inline-block;
+}
+
+/* ------------------------------------------ BLOCK STYLE ------------------------------------------ */
+
+#worlds a,
+#worlds a:visited,
+#guides a,
+#guides a:visited {
+
+ color: white;
+}
+
+
+
+#worlds dt,
+#worlds dd,
+#benefits dt,
+#benefits dd,
+#guides > li a {
+
+ position: relative;
+}
+
+#worlds dt:before,
+#worlds dd:before,
+#benefits dt:before,
+#benefits dd:before,
+#guides > li a {
+
+ box-shadow:
+ 0 0 1.00rem hsl(0, 100%, 100%, 0.5),
+ 0 0rem 0.75rem hsla(0, 0%, 0%, 0.5),
+ 0 0rem 0.5rem hsla(0, 0%, 0%, 0.75),
+ 0 0rem 0.25rem hsla(0, 0%, 0%, 1);
+}
+
+/*
+#worlds dt:before,
+#worlds dd:before,
+#benefits dt:before,
+#benefits dd:before {
+
+ content: " ";
+ width: 100%;
+ height: 100%;
+ z-index: 10;
+ display: block;
+ top: 0;
+ left: 0;
+ position: absolute;
+}
+*/
+
+#worlds dt,
+#benefits dt {
+
+ z-index: 50;
+}
+
+#worlds dd img,
+#benefits dd img {
+
+ position: relative;
+ z-index: 200;
+}
+
+#benefits dt,
+#benefits dd,
+#worlds dt,
+#worlds dd
+{
+
+ border-style: solid;
+}
+
+#benefits dd,
+#worlds dd {
+
+ font-weight: 600;
+}
+
+#benefits dt,
+#worlds dt {
+
+ font-weight: bold;
+}
+
+
+
+
+/* --------------------------------------- RAISONS DE VENIR --------------------------------------- */
+
+
+#benefits dd,
+#benefits dt {
+
+ color: hsl(0, 0%, 20%);
+ border-color: var(--navy);
+ overflow: hidden;
+}
+
+#benefits a,
+#benefits a:visited {
+
+ color: inherit;
+}
+
+#benefits dd {
+
+ background-color: var(--nuage-1);
+}
+
+#benefits dt{
+
+ background-color: var(--nuage-1);
+}
+
+
+
+
+/* ------------------------------------------ MONDES ------------------------------------------ */
+
+
+
+#worlds dt {
+
+ font-weight: bold;
+}
+
+#worlds dd address {
+
+ font-style: normal;
+}
+
+#worlds dt,
+#worlds dd {
+
+ border-color: #ffff81;
+ overflow: hidden;
+}
+
+#worlds dt {
+
+ background-color: green;
+ color: white;
+}
+
+#worlds dd {
+
+ background-color: var(--marron);
+ color: white;
+}
+
+
+/* ------------------------------------------ GUIDES ------------------------------------------ */
+
+
+#guides > li a {
+
+ border-color: transparent;
+ background-image:
+ linear-gradient(hsla(0, 0%, 100%, 0.6) 0%, hsla(0, 0%, 100%, 0.61) 100%),
+ url("sprites/default_gravel.png");
+ background-size: cover, 25.5rem;
+}
+
+#guides > li a > span,
+#guides > li a img {
+
+
+ background-color: transparent;
+ color: black;
+}
+
+#guides > li a dfn,
+#guides > li a:visited dfn {
+
+ background-color: hsl(0, 0%, 15%);
+ color: hsl(0, 0%, 95%);
+
+}
+
+#guides > li a:hover {
+
+ transform: scale(1.05);
+ border-color: black;
+}
+
+#guides {
+
+ counter-reset: num-tuto;
+}
+
+#guides > li a,
+#guides > li a:visited {
+
+ text-decoration: none;
+}
+
diff --git a/css/decoration.css b/css/decoration.css
new file mode 100644
index 0000000..9cc3b6b
--- /dev/null
+++ b/css/decoration.css
@@ -0,0 +1,259 @@
+:root {
+
+ --marron: hsl(25.5, 67.8%, 40.2%);
+ --marron-fonce: hsl(25.5, 67.8%, 20.1%);
+ --nuage-1: hsl(60, 100%, 97.6%);
+ --nuage-2: hsl(48, 20%, 80.4%);
+ --bleu-ciel: hsl(215.3, 91.1%, 78%);
+ --orange: #ff4000;
+ --rouge: rgb(255, 110, 110);
+}
+
+@font-face {
+
+ font-family: Cantarell;
+ src: url("https://txmn.tk:8480/ipfs/QmdrTnJY7sW7DPJDwwoujoAAuKPwjDLbjzBKEVj8uuBoTF/Cantarell-Regular.otf") format("opentype"),
+ url("/fonts/Cantarell-Regular.otf") format("opentype");
+}
+
+@font-face {
+
+ font-family: SourceCodePro;
+ src: url("https://txmn.tk:8480/ipfs/Qmf1N4o5DjrPRLaSiqCmBf9CUyksvgys2m2oj5WA2gAwDR/SourceCodePro-Regular.otf") format("opentype"),
+ url("/fonts/SourceCodePro-Regular.otf") format("opentype");
+}
+
+html, body {
+
+ font-family: Cantarell, "Liberation Sans", Helvetica, Arial;
+}
+
+.sr-only {
+
+ display: none !important;
+}
+
+
+body > header nav button {
+
+ background-color: transparent;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: pointer;
+
+}
+
+body > header nav button:after {
+
+ background-color: transparent;
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.8)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
+ background-repeat: repeat;
+ background-position: center center;
+ background-size: cover;
+}
+
+header nav ul li a {
+
+ text-decoration: none;
+}
+
+header .sitedesc {
+
+ font-weight: bold;
+}
+
+footer [role="contentinfo"] {
+
+ opacity: 0.666;
+}
+
+
+
+/* ------------------------------------------ CONTENTS ------------------------------------------ */
+
+
+
+article {
+
+ border-style: solid;
+ border-color: var(--marron-fonce);
+ background-image:
+ linear-gradient(hsla(0, 0%, 100%, 0.5) 0%, hsla(0, 0%, 100%, 0.5) 100%),
+ url("sprites/default_pine_wood.png");
+ background-size: cover, 2rem;
+ background-position-y: 0, -0.75rem;
+ color: black;
+}
+
+body.guide article {
+
+ border-color: transparent;
+ background-image:
+ linear-gradient(hsla(0, 0%, 100%, 0.6) 0%, hsla(0, 0%, 100%, 0.61) 100%),
+ url("sprites/default_gravel.png");
+ background-size: cover, 25.5rem;
+}
+
+
+article h1 {
+
+ background: var(--marron-fonce);
+ color: white;
+}
+
+body.guide article h1 {
+
+ background: #222;
+ color: white;
+}
+
+
+
+a, a:visited {
+
+ color: blue;
+}
+
+
+#successMsg {
+
+ opacity: 0;
+}
+
+code {
+
+ background-color: black;
+ color: white;
+ padding: 0.25rem 0.5rem;
+}
+
+/* ------------------------------------------ TABLEAUX ------------------------------------------ */
+
+
+table {
+
+ border-collapse: collapse;
+}
+
+table thead {
+
+ background: black;
+ color: white;
+}
+
+tbody > tr:nth-of-type(odd) {
+
+ background-color: #ededed;
+}
+
+tbody > tr:nth-of-type(even) {
+
+ background-color: white;
+}
+
+table td,
+table th {
+
+ border-style: solid;
+ border-color: black;
+}
+
+table td.nombre,
+table th.nombre {
+
+ text-align: right;
+}
+
+
+
+/* ------------------------------------------ SERVEURS ------------------------------------------ */
+
+
+
+address, dfn {
+
+ font-style: normal;
+}
+
+address.server > * {
+
+ font-family: SourceCodePro, "DroidSans Mono", Cantarell, "Liberation Sans", Helvetica, Arial;
+
+ border-style: solid;
+ background-color: var(--orange);
+ border-color: var(--orange);
+
+ color: white;
+}
+
+address.server dfn {
+
+ background-color: white;
+ color: black;
+}
+
+address.server span:last-of-type {
+
+ border-left-color: white;
+}
+
+address.server span:first-of-type {
+
+ border-right-color: white;
+}
+
+
+
+
+/* ------------------------------------------ BOITES ------------------------------------------ */
+
+
+
+.warn {
+
+ background-color: var(--rouge);
+}
+
+.warn:before {
+
+ content: "⚠ ";
+ float: left;
+ font-size: 3em;
+}
+
+kdb, .mono {
+
+ font-family: SourceCodePro, "DroidSans Mono", Cantarell, "Liberation Sans", Helvetica, Arial;
+
+ border-style: solid;
+
+ border-color: rgba(200,200,200,0.5);
+ background-color: hsl(0, 0%, 98%);
+ color: black;
+}
+
+.pubkey-and-copy-button input {
+
+ border-color: var(--marron-fonce);
+}
+
+.pubkey-and-copy-button button {
+
+ background-color: var(--marron-fonce);
+ color: white;
+ font-weight: bold;
+}
+
+q {
+
+ font-style: italic;
+}
+
+q:before {
+
+ padding-right: 0.25em;
+}
+
+q:after {
+
+ padding-left: 0.25em;
+}
diff --git a/css/layout-donors.css b/css/layout-donors.css
new file mode 100644
index 0000000..2f8f97f
--- /dev/null
+++ b/css/layout-donors.css
@@ -0,0 +1,180 @@
+@import "cols.css";
+
+/* ------------------------------------------ DONORS ------------------------------------------ */
+
+
+.donorsList {
+
+ margin-left: 0;
+ margin-right: 0;
+ padding-left: 0;
+ padding-right: 0;
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+ /*
+ display: flex;
+ flex-wrap: wrap;
+ */
+ justify-content: center;
+ display: grid;
+
+ grid-row-gap: 1rem;
+ grid-column-gap: 1rem;
+
+ grid-auto-flow: row;
+}
+
+.donorsList li {
+ /*
+ flex-basis: var(--base-width);
+ flex-grow: 0;
+
+ display: flex;
+ align-items: center;
+ */
+ overflow: hidden;
+ margin: 0;
+ text-align: center;
+
+ border-width: 0.25rem;
+}
+
+
+
+.donorsList li a {
+
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ width: 100%;
+ font-size: 0.9em;
+}
+
+
+.donorsList li a img {
+
+ width: 100%;
+ display: block;
+}
+
+
+
+.donorsList li a img,
+.donorsList li a .name {
+
+ width: 100%;
+}
+
+
+.donorsList li a .name {
+
+ flex-grow: 1;
+ padding: 1rem 0;
+ text-align: center;
+
+ display: flex;
+ align-items: center;
+}
+
+
+.donorsList li a .name span {
+
+ padding: 0 1em;
+
+ flex-grow: 1;
+}
+
+
+@media screen and (min-width: 28.5rem) {
+
+
+ .donorsList li:nth-of-type(3n+1) {
+
+ grid-column: 1;
+ }
+
+ .donorsList li:nth-of-type(3n+2) {
+
+ grid-column: 2;
+ }
+
+ .donorsList li:nth-of-type(3n+3) {
+
+ grid-column: 3;
+ }
+
+}
+
+@media screen and (min-width: 42.25rem) {
+
+ .donorsList li:nth-of-type(5n+1) {
+
+ grid-column: 1;
+ }
+
+ .donorsList li:nth-of-type(5n+2) {
+
+ grid-column: 2;
+ }
+
+ .donorsList li:nth-of-type(5n+3) {
+
+ grid-column: 3;
+ }
+
+ .donorsList li:nth-of-type(5n+4) {
+
+ grid-column: 4;
+ }
+
+ .donorsList li:nth-of-type(5n+5) {
+
+ grid-column: 5;
+ }
+}
+
+
+@media screen and (min-width: 83.5rem) {
+
+
+@media screen and (min-width: 42.25rem) {
+
+ .donorsList li:nth-of-type(7n+1) {
+
+ grid-column: 1;
+ }
+
+ .donorsList li:nth-of-type(7n+2) {
+
+ grid-column: 2;
+ }
+
+ .donorsList li:nth-of-type(7n+3) {
+
+ grid-column: 3;
+ }
+
+ .donorsList li:nth-of-type(7n+4) {
+
+ grid-column: 4;
+ }
+
+ .donorsList li:nth-of-type(7n+5) {
+
+ grid-column: 5;
+ }
+
+ .donorsList li:nth-of-type(7n+6) {
+
+ grid-column: 6;
+ }
+
+ .donorsList li:nth-of-type(7n+7) {
+
+ grid-column: 7;
+ }
+}
+}
+
+
+
diff --git a/css/layout-home.css b/css/layout-home.css
new file mode 100644
index 0000000..79507b1
--- /dev/null
+++ b/css/layout-home.css
@@ -0,0 +1,511 @@
+@import "cols.css";
+
+body.home main h2 {
+
+ text-align: center;
+ margin-top: 3rem;
+ margin-bottom: 2rem;
+
+ font-size: 2rem;
+}
+
+
+
+
+
+/* ------------------------------------------ INVITATION ------------------------------------------ */
+
+
+
+
+
+
+
+
+
+details#invite {
+
+ box-shadow: 0 0 1em hsla(0, 0%, 0%, 0.75);
+ overflow: auto;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 3rem;
+
+ height: 10rem;
+ width: calc(10rem/114*229);
+
+ position: relative;
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ background: hsl(60, 100%, 95.5%);
+}
+
+
+details#invite[open] em,
+details#invite[open] time,
+details#invite[open] strong,
+details#invite[open] a {
+
+ font-style: inherit;
+ font-weight: normal;
+ text-decoration: underline;
+ color: inherit;
+}
+
+
+details#invite[open] {
+
+ width: calc(10rem/114*229);
+ height: auto;
+
+ font-style: italic;
+}
+
+details#invite[open] > * {
+
+ max-height: calc(3*10rem);
+ height: auto;
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+
+details#invite[open] > *:before,
+details#invite[open] > *:after {
+
+ content: "";
+ width: 100%;
+ position: absolute;
+ top: 0;
+ border-bottom: 0.125rem solid hsla(60, 50%, 50%, 0.07);
+}
+
+details#invite[open] > *:before {
+
+ height: 33%;
+
+}
+
+details#invite[open] > *:after {
+
+ height: 66%;
+}
+
+details#invite[open] > * > * {
+
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+details#invite summary {
+
+ list-style: none;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ text-align: right;
+
+ padding-top: 1rem;
+ padding-right: 3rem;
+ height: 100%;
+ width: 100%;
+ box-sizing: border-box;
+
+ cursor: pointer;
+}
+
+details#invite summary time {
+
+ position: absolute;
+ top: 0;
+ right: 0;
+
+ padding-right: 1rem;
+ padding-top: 0.5rem;
+}
+
+details#invite[open] summary {
+
+ display: none;
+}
+
+
+
+
+
+
+
+/* ------------------------------------------ BLOCKS ------------------------------------------ */
+
+
+
+
+
+#guides img,
+#worlds img,
+#benefits img
+{
+ width: 100%;
+}
+
+
+#guides {
+
+ padding-left: 0;
+}
+
+
+#benefits,
+#guides {
+
+ display: grid;
+ justify-content: center;
+
+}
+
+
+#benefits {
+
+ grid-row-gap: 0;
+}
+
+#guides {
+
+ list-style: none;
+
+ grid-row-gap: 2rem;
+}
+
+#benefits dd {
+
+ margin-bottom: 1rem;
+}
+
+#benefits dt {
+
+ margin-top: 1rem;
+}
+
+#benefits {
+
+ margin-top: 0;
+}
+
+#worlds,
+#guides {
+
+ padding-top: 1rem;
+}
+
+#worlds {
+
+ padding-bottom: 1rem;
+}
+
+#worlds dd {
+
+ margin-bottom: 2rem;
+ margin-left: 0;
+}
+
+#worlds dd:last-of-type {
+
+ margin-bottom: 0;
+}
+
+#benefits dt,
+#worlds dt,
+#guides > li a dfn,
+#guides > li a:visited dfn {
+
+ padding: 1rem;
+ text-align: center;
+ font-size: 1.25rem;
+ border-top-width: 0.25rem;
+ border-bottom-width: 0;
+}
+
+#benefits dd,
+#worlds dd,
+#guides > li a > span,
+#guides > li a img {
+
+ border-top-width: 0;
+ border-bottom-width: 0.25rem;
+ margin-left: 0;
+}
+#guides > li a img {
+
+ border-top-width: 0;
+ border-bottom-width: 0;
+}
+
+#benefits dd img,
+#worlds dd img {
+
+ display: block;
+}
+
+#benefits dd p,
+#worlds dd p,
+#worlds dd address {
+
+ margin: 1rem;
+}
+
+
+
+/* ------------------------------------------ MONDES ------------------------------------------ */
+
+#worlds {
+
+ display: grid;
+ grid-row-gap: 0;
+ justify-content: center;
+}
+
+#worlds dt {
+
+ text-align: center;
+}
+
+/* ------------------------------------------ GUIDES ------------------------------------------ */
+
+
+#guides > li {
+
+ margin: 0;
+ padding: 0;
+}
+
+#guides > li a,
+#guides > li a:visited {
+
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+}
+
+#guides > li a dfn { order: 1; }
+#guides > li a img { order: 2; }
+#guides > li a > span { order: 3; }
+
+
+
+#guides > li a > span {
+
+ padding: 1rem;
+ width: calc(100% - 2 * 1rem);
+}
+
+
+
+
+
+
+/* ------------------------------------------ RESPONSIVE ------------------------------------------ */
+
+
+#benefits,
+#guides,
+#worlds {
+
+ grid-column-gap: var(--col-gap);
+ grid-template-columns: calc(100% - 1rem);
+}
+
+
+#benefits dt,
+#benefits dd,
+#worlds dt,
+#worlds dd
+{
+ border-left-width: var(--box-border-width);
+ border-right-width: var(--box-border-width);
+}
+
+#guides > li a {
+
+ border-width: var(--box-border-width);
+}
+
+
+
+
+@media screen and (min-width: 56rem) {
+
+ /* BENEFITS */
+
+ #benefits > dt:nth-of-type(2n+1),
+ #benefits > dd:nth-of-type(2n+1) {
+
+ grid-column: 1;
+ }
+
+ #benefits > dt:nth-of-type(2n+2),
+ #benefits > dd:nth-of-type(2n+2) {
+
+ grid-column: 2;
+ }
+
+ #benefits dt:nth-of-type(n + 1) {
+
+ grid-row: 1;
+ }
+
+ #benefits dd:nth-of-type(n + 1) {
+
+ grid-row: 2;
+ }
+
+
+ #benefits dt:nth-of-type(n + 3) {
+
+ grid-row: 3;
+ }
+
+ #benefits dd:nth-of-type(n + 3) {
+
+ grid-row: 4;
+ }
+
+
+ #benefits dt:nth-of-type(n + 5) {
+
+ grid-row: 5;
+ }
+
+ #benefits dd:nth-of-type(n + 5) {
+
+ grid-row: 6;
+ }
+
+
+ /* GUIDES */
+
+ #guides > li:nth-of-type(2n+1) {
+
+ grid-column: 1;
+ }
+ #guides > li:nth-of-type(2n+2) {
+
+ grid-column: 2;
+ }
+}
+
+@media screen and (min-width: 83.5rem) {
+
+ /* BENEFITS */
+
+ #benefits > dt:nth-of-type(3n+1),
+ #benefits > dd:nth-of-type(3n+1) {
+
+ grid-column: 1;
+ }
+
+ #benefits > dt:nth-of-type(3n+2),
+ #benefits > dd:nth-of-type(3n+2) {
+
+ grid-column: 2;
+ }
+
+ #benefits > dt:nth-of-type(3n+3),
+ #benefits > dd:nth-of-type(3n+3) {
+
+ grid-column: 3;
+ }
+
+ #benefits dt:nth-of-type(n + 1) {
+
+ grid-row: 1;
+ }
+
+ #benefits dd:nth-of-type(n + 1) {
+
+ grid-row: 2;
+ }
+
+
+ #benefits dt:nth-of-type(n + 4) {
+
+ grid-row: 3;
+ }
+
+ #benefits dd:nth-of-type(n + 4) {
+
+ grid-row: 4;
+ }
+
+ /* WORLDS */
+
+ #worlds dd {
+
+ grid-row: 2;
+ margin-bottom: 0rem;
+ }
+
+ /* GUIDES */
+
+ #guides > li:nth-of-type(3n+1){
+
+ grid-column: 1;
+ }
+ #guides > li:nth-of-type(3n+2) {
+
+ grid-column: 2;
+ }
+ #guides > li:nth-of-type(3n+3) {
+
+ grid-column: 3;
+ }
+}
+
+
+@media screen and (min-width: 28.5rem) {
+
+ #benefits {
+
+ grid-template-columns:
+ repeat(
+ calc(var(--page-col-nb) / var(--benefits-col-nb)),
+ calc(
+ var(--benefits-col-nb) * var(--col-width) + (var(--benefits-col-nb) - 1) * var(--col-gap)
+ )
+ );
+ }
+
+
+ #guides {
+
+ grid-template-columns:
+ repeat(
+ calc(var(--page-col-nb) / var(--guides-col-nb)),
+ calc(
+ var(--guides-col-nb) * var(--col-width) + (var(--guides-col-nb) - 1) * var(--col-gap)
+ )
+ );
+ }
+
+
+ #worlds {
+
+ grid-template-columns:
+ repeat(
+ calc(var(--page-col-nb) / var(--worlds-col-nb)),
+ calc(
+ var(--worlds-col-nb) * var(--col-width) + (var(--worlds-col-nb) - 1) * var(--col-gap)
+ )
+ );
+ }
+}
+
+#video-presentation {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 3rem;
+ max-width: 100%;
+}
diff --git a/css/layout.css b/css/layout.css
new file mode 100644
index 0000000..972ca64
--- /dev/null
+++ b/css/layout.css
@@ -0,0 +1,632 @@
+@import "cols.css";
+
+
+body {
+
+ margin: 0 !important;
+ padding: 0 !important;
+}
+
+body > * {
+
+ position: relative;
+ z-index: 100;
+}
+
+/* ------------------------------------------ HEADER ------------------------------------------ */
+
+
+body > header {
+
+ margin-top: 0;
+ padding-top: 0;
+
+ overflow: hidden;
+}
+
+
+body > header {
+
+ text-align: center;
+
+ margin-left: auto;
+ margin-right: auto;
+}
+
+body > header a .sitename {
+
+ display: none;
+}
+
+
+body > header {
+
+ z-index: 200;
+}
+
+body > header > :first-child {
+
+ z-index: 250;
+}
+
+body > header > * {
+
+ margin-left: auto;
+ margin-right: auto;
+}
+
+body > header > :first-child a:before {
+
+ display: block;
+}
+
+body > header > :first-child {
+
+ margin-top: 0;
+ margin-bottom: 0;
+ overflow: hidden;
+ line-height: 1rem;
+}
+
+body > header > :first-child > * {
+
+ display: block;
+}
+
+body > header a {
+
+ text-decoration: none;
+}
+
+body > header .sitedesc {
+
+ font-size: 1.5rem;
+ line-height: 2.5rem;
+ position: relative;
+ top: -0.5rem;
+}
+
+body > header nav {
+
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+
+ margin-left: auto;
+ margin-right: auto;
+
+ overflow: hidden;
+}
+
+
+body > header nav button span {
+
+ display: none;
+}
+body > header nav ul {
+
+ list-style : none;
+ display: flex;
+ flex-flow: wrap;
+ justify-content: space-between;
+
+ padding: 0;
+ margin: 0;
+}
+
+body > header nav ul li {
+
+ margin-left: 0;
+ margin-right: 0;
+}
+
+body > header nav ul li a {
+
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ height: 2rem;
+}
+
+body > header #banner {
+
+ width: 100%;
+}
+
+body > header > :first-child a:before {
+
+ content: url("banner-330w.png");
+}
+
+body > header img,
+body > header nav {
+
+ width: 100%;
+}
+
+
+
+
+
+
+/* ------------------------------------------ FOOTER ------------------------------------------ */
+
+
+
+footer {
+
+ text-align: center;
+ overflow: hidden;
+
+ padding-top: 10rem;
+ padding-bottom: 1rem;
+}
+
+footer nav {
+
+ display: none;
+}
+
+#serverlist {
+
+ margin-top: 4rem;
+
+ display: flex;
+ justify-content: center;
+ flex-wrap: wrap;
+}
+
+#serverlist > * {
+
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+/* ------------------------------------------ CONTENTS ------------------------------------------ */
+
+
+main {
+
+ margin-top: 0;
+ margin-bottom: 2rem;
+}
+
+main h1 {
+
+ font-size: 2.5rem;
+ text-align: center;
+}
+
+main h2 {
+
+ font-size: 1.66rem;
+}
+
+main h3 {
+
+ font-size: 1.33rem;
+ margin-top: 0.75rem;
+ margin-bottom: 0.25rem;
+}
+
+article {
+
+ box-sizing: border-box;
+
+ border-top-width: 0.5rem;
+ border-bottom-width: 0.5rem;
+
+ margin-top: 3rem;
+
+ padding-left: 0;
+ padding-right: 0;
+ padding-top: 0;
+ padding-bottom: 2rem;
+
+ margin-left: auto;
+ margin-right: auto;
+
+ overflow: hidden;
+}
+
+article h1 {
+
+ overflow: hidden;
+ padding-top: 0.5rem;
+ padding-bottom: 1rem;
+}
+
+article > :first-child,
+article > :first-child :first-child {
+
+ margin-top: 0;
+}
+
+article > :not(:first-child) {
+
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+body.install article section {
+
+ margin-top: 3rem;
+ margin-bottom: 3rem;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+}
+
+article img {
+
+ max-width: 100%;
+ height: auto;
+}
+
+/*
+article table.keymapping tr > td:first-of-type {
+
+ text-align: right;
+}
+*/
+
+
+article table {
+
+ margin-left: auto;
+ margin-right: auto;
+}
+
+article table td,
+article table th {
+
+ border-width: 0.125rem;
+ padding: 0.5rem;
+}
+
+.adresse, .politesse {
+
+ text-align: center;
+}
+
+.signature {
+
+ text-align: right;
+}
+
+
+
+/* ------------------------------------------ GALLERIES ------------------------------------------ */
+
+.gallery {
+
+ display: grid;
+ grid-column-gap: 1rem;
+ grid-row-gap: 1rem;
+ overflow: hidden;
+}
+
+.gallery > * {
+
+ margin: 0;
+}
+
+.gallery figcaption {
+
+ text-align: center;
+ font-style: italic;
+}
+
+@media (min-width: 56rem) {
+
+ .gallery_2_1 > :nth-child(2n + 1) {
+
+ grid-column: 1;
+ }
+
+ .gallery_2_1 > :nth-child(2n + 2) {
+
+ grid-column: 2;
+ }
+}
+
+@media (min-width: 42.25rem) {
+
+ .gallery_3_2_1 > :nth-child(2n + 1) {
+
+ grid-column: 1;
+ }
+
+ .gallery_3_2_1 > :nth-child(2n + 2) {
+
+ grid-column: 2;
+ }
+}
+
+@media (min-width: 56rem) {
+
+ .gallery_3_2_1 > :nth-child(3n + 1) {
+
+ grid-column: 1;
+ }
+
+ .gallery_3_2_1 > :nth-child(3n + 2) {
+
+ grid-column: 2;
+ }
+
+ .gallery_3_2_1 > :nth-child(3n + 3) {
+
+ grid-column: 3;
+ }
+}
+
+/* ------------------------------------------ SERVEURS ------------------------------------------ */
+
+
+
+address.server {
+
+ padding-bottom: 0.125rem;
+ display: flex;
+ justify-content: center;
+}
+
+address.server > * {
+
+ border-width: 0.125rem;
+
+ padding-left: 0.25rem;
+ padding-right: 0.25rem;
+}
+
+address.server dfn {
+
+ border-width: 0.125rem;
+
+ border-top-left-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+}
+
+address.server span:last-of-type {
+
+ border-top-right-radius: 0.25rem;
+ border-bottom-right-radius: 0.25rem;
+
+ border-left-width: 0.0627rem;
+
+}
+
+address.server span:last-of-type {
+
+ border-top-right-radius: 0.25rem;
+ border-bottom-right-radius: 0.25rem;
+
+ border-left-width: 0.0627rem;
+
+}
+
+address.server span:first-of-type {
+
+ border-right-width: 0.0627rem;
+}
+
+/*
+address.server span:last-of-type:before {
+
+ content: " : ";
+}
+*/
+
+
+/* ------------------------------------------ BOITES ------------------------------------------ */
+
+
+.warn {
+
+ padding: 1rem;
+ border-radius: 0.25rem;
+}
+
+kdb, .mono {
+
+ border-width: 0.125rem;
+ border-radius: 0.25rem;
+ padding: 0.125rem 0.5rem;
+}
+
+
+.pubkey-and-copy-button {
+
+ display: flex;
+}
+
+.pubkey-and-copy-button input {
+
+ flex-grow: 1;
+
+ border-width: 0.125rem;
+ border-style: solid;
+ padding: 0.5rem;
+}
+
+.pubkey-and-copy-button button {
+
+ border: 0;
+ padding: 0.5rem;
+}
+
+/* ------------------------------------------ RESPONSIVE ------------------------------------------ */
+
+body > header nav button {
+
+ display: none;
+}
+
+@media screen and (max-width: 35.374rem) {
+
+ body > header nav {
+
+ position: fixed;
+ top: 0;
+ left: 0;
+
+ z-index: 300;
+ margin: 0;
+
+ background-color: transparent;
+ transition-duration: 0.5s;
+ transition-property: background-color;
+ transition-timing-function: ease-out;
+ }
+
+ body > header nav button {
+
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 300;
+
+ width: 2rem;
+ height: 2rem;
+
+ display: block;
+ border: 0;
+
+ padding: 0;
+ margin: 1rem 0 0 1rem;
+ }
+
+ body > header nav button:after {
+
+ content: "";
+ display: block;
+ width: 100%;
+ height: 100%;
+
+ position: relative;
+ top: 0;
+ left: 0;
+ z-index: 300;
+
+ margin: 0;
+ border: 0;
+ }
+
+ body > header nav ul {
+
+ position: fixed;
+ top: 4rem;
+ left: 0;
+
+ z-index: 150;
+
+ height: 0;
+ opacity: 0;
+ display: block;
+
+ overflow: hidden;
+
+ transition-duration: 1s;
+ transition-property: opacity;
+ transition-timing-function: ease-out;
+ }
+
+
+}
+
+
+
+article {
+
+ border-left-width: 0;
+ border-right-width: 0;
+}
+
+@media screen and (min-width: 28.5rem) {
+
+ body > header > *,
+ article {
+
+ border-left-width: 0.5rem;
+ border-right-width: 0.5rem;
+
+ max-width: calc(4 * (var(--col-width) + var(--col-gap)));
+ }
+}
+
+@media screen and (min-width: 35.375rem) {
+
+ body > header > *,
+ article {
+
+ max-width: calc(5 * (var(--col-width) + var(--col-gap)));
+ }
+
+ body > header > :first-child a:before {
+
+ content: url("banner-550w.png");
+ }
+
+}
+@media screen and (min-width: 42.25rem) {
+
+ body > header > *,
+ article {
+
+ max-width: calc(6 * (var(--col-width) + var(--col-gap)));
+ }
+
+}
+
+@media screen and (min-width: 56rem) {
+
+ body > header > *,
+ article {
+
+ max-width: calc(8 * (var(--col-width) + var(--col-gap)));
+ }
+
+ body > header > :first-child a:before {
+
+ content: url("banner-660w.png");
+ }
+
+ body > header .sitedesc {
+
+ font-size: 1.75rem;
+ }
+
+ body > header nav {
+
+ max-width: calc(6 * (var(--col-width) + var(--col-gap)));
+ }
+}
+
+@media screen and (min-width: 83.5rem) {
+
+ body > header > *,
+ article {
+
+ max-width: calc(9 * (var(--col-width) + var(--col-gap)));
+ }
+
+ body > header > :first-child a:before {
+
+ content: url("banner-770w.png");
+ }
+
+
+ body > header .sitedesc {
+
+ font-size: 2rem;
+ }
+
+ body > header nav {
+
+ max-width: calc(7 * (var(--col-width) + var(--col-gap)));
+ }
+}
+
+
+
diff --git a/css/slideshow.css b/css/slideshow.css
new file mode 100644
index 0000000..c2b6ae4
--- /dev/null
+++ b/css/slideshow.css
@@ -0,0 +1,98 @@
+.slide-container {
+ box-sizing: border-box;
+ max-width: 100vw;
+ max-height: 100vh;
+ position: relative;
+ margin: auto;
+}
+
+.slide {
+ box-sizing: border-box;
+ display: none;
+ max-width: 100vw;
+ max-height: 100vh;
+}
+
+.slide img {
+ object-fit: cover;
+ display: block;
+ max-width: 100vw;
+ max-height: 100vh;
+ width: 100%;
+ height: auto;
+}
+
+.slide-prev, .slide-next {
+ cursor: pointer;
+ position: absolute;
+ top: 50%;
+ width: auto;
+ margin-top: -22px;
+ padding: 16px;
+ color: white;
+ font-weight: bold;
+ font-size: 18px;
+ transition: 0.6s ease;
+ border-radius: 0 3px 3px 0;
+ user-select: none;
+}
+
+.slide-next {
+ right: 0;
+ border-radius: 3px 0 0 3px;
+}
+
+.slide-prev:hover, .slide-next:hover {
+ background-color: rgba(0,0,0,0.8);
+}
+
+.slide-text {
+ box-sizing: border-box;
+ color: #f2f2f2;
+ font-size: 15px;
+ padding: 8px 12px;
+ position: absolute;
+ bottom: 8px;
+ width: 100%;
+ text-align: center;
+}
+
+.slide-number {
+ color: #f2f2f2;
+ font-size: 12px;
+ padding: 8px 12px;
+ position: absolute;
+ top: 0;
+}
+
+.slide-dot {
+ cursor: pointer;
+ height: 15px;
+ width: 15px;
+ margin: 0 2px;
+ background-color: #bbb;
+ border-radius: 50%;
+ display: inline-block;
+ transition: background-color 0.6s ease;
+}
+
+.slide-active, .slide-dot:hover {
+ background-color: #717171;
+}
+
+.slide-fade {
+ -webkit-animation-name: fade;
+ -webkit-animation-duration: 1.5s;
+ animation-name: fade;
+ animation-duration: 1.5s;
+}
+
+@-webkit-keyframes fade {
+ from {opacity: .4}
+ to {opacity: 1}
+}
+
+@keyframes fade {
+ from {opacity: .4}
+ to {opacity: 1}
+}
diff --git a/css/sprites/default_desert_cobble.png b/css/sprites/default_desert_cobble.png
new file mode 100644
index 0000000..fa1af5d
Binary files /dev/null and b/css/sprites/default_desert_cobble.png differ
diff --git a/css/sprites/default_desert_sand.png b/css/sprites/default_desert_sand.png
new file mode 100644
index 0000000..371b8c7
Binary files /dev/null and b/css/sprites/default_desert_sand.png differ
diff --git a/css/sprites/default_desert_sandstone.png b/css/sprites/default_desert_sandstone.png
new file mode 100644
index 0000000..52e445f
Binary files /dev/null and b/css/sprites/default_desert_sandstone.png differ
diff --git a/css/sprites/default_desert_sandstone_block.png b/css/sprites/default_desert_sandstone_block.png
new file mode 100644
index 0000000..8fc54e7
Binary files /dev/null and b/css/sprites/default_desert_sandstone_block.png differ
diff --git a/css/sprites/default_desert_sandstone_brick.png b/css/sprites/default_desert_sandstone_brick.png
new file mode 100644
index 0000000..ab58db5
Binary files /dev/null and b/css/sprites/default_desert_sandstone_brick.png differ
diff --git a/css/sprites/default_desert_stone.png b/css/sprites/default_desert_stone.png
new file mode 100644
index 0000000..5d3aded
Binary files /dev/null and b/css/sprites/default_desert_stone.png differ
diff --git a/css/sprites/default_desert_stone_block.png b/css/sprites/default_desert_stone_block.png
new file mode 100644
index 0000000..bedfe62
Binary files /dev/null and b/css/sprites/default_desert_stone_block.png differ
diff --git a/css/sprites/default_desert_stone_brick.png b/css/sprites/default_desert_stone_brick.png
new file mode 100644
index 0000000..a7234ea
Binary files /dev/null and b/css/sprites/default_desert_stone_brick.png differ
diff --git a/css/sprites/default_gravel.png b/css/sprites/default_gravel.png
new file mode 100644
index 0000000..df61c60
Binary files /dev/null and b/css/sprites/default_gravel.png differ
diff --git a/css/sprites/default_pine_wood.png b/css/sprites/default_pine_wood.png
new file mode 100644
index 0000000..6844ceb
Binary files /dev/null and b/css/sprites/default_pine_wood.png differ
diff --git a/css/sprites/default_sign_steel.png b/css/sprites/default_sign_steel.png
new file mode 100644
index 0000000..3ca0c59
Binary files /dev/null and b/css/sprites/default_sign_steel.png differ
diff --git a/css/sprites/default_sign_wall_steel.png b/css/sprites/default_sign_wall_steel.png
new file mode 100644
index 0000000..2227477
Binary files /dev/null and b/css/sprites/default_sign_wall_steel.png differ
diff --git a/css/sprites/default_sign_wall_wood.png b/css/sprites/default_sign_wall_wood.png
new file mode 100644
index 0000000..40552c7
Binary files /dev/null and b/css/sprites/default_sign_wall_wood.png differ
diff --git a/css/sprites/default_sign_wood.png b/css/sprites/default_sign_wood.png
new file mode 100644
index 0000000..d0559da
Binary files /dev/null and b/css/sprites/default_sign_wood.png differ
diff --git a/css/sprites/default_torch_on_floor.png b/css/sprites/default_torch_on_floor.png
new file mode 100644
index 0000000..bc4bdd6
Binary files /dev/null and b/css/sprites/default_torch_on_floor.png differ
diff --git a/css/sprites/default_water.png b/css/sprites/default_water.png
new file mode 100644
index 0000000..00500e9
Binary files /dev/null and b/css/sprites/default_water.png differ
diff --git a/css/sprites/default_wood.png b/css/sprites/default_wood.png
new file mode 100644
index 0000000..af56d6c
Binary files /dev/null and b/css/sprites/default_wood.png differ
diff --git a/css/sprites/heart.png b/css/sprites/heart.png
new file mode 100644
index 0000000..4412cab
Binary files /dev/null and b/css/sprites/heart.png differ
diff --git a/css/t-dawn-or-dusk.css b/css/t-dawn-or-dusk.css
new file mode 100644
index 0000000..b12af29
--- /dev/null
+++ b/css/t-dawn-or-dusk.css
@@ -0,0 +1,174 @@
+:root {
+
+ --soleil2: #fdff51;
+ --soleil3: #d77f0d;
+ --soleil4: #b93805;
+}
+
+body {
+
+ background-color: #d45a00;
+ background-image:
+
+ linear-gradient(#7d492d 0%, #7d492d 8rem,
+ #c63300 8rem, #c63300 10rem,
+ #d14907 10rem, hsl(25, 100%, 41.6%) calc(100% - 20rem),
+ black calc(100% - 5rem), black 100%);
+
+ color: #eee;
+}
+
+body main > h1,
+body main > h2 {
+
+ text-shadow: 0 0 0.25em #333;
+}
+
+body > header {
+
+ background-image:
+ radial-gradient(circle closest-side,
+ #ffffff 0%, #ffffff 25%,
+ #fdff51 25%, #d77a0d 32%,
+ #b63908 50%, transparent 100%),
+
+ radial-gradient(ellipse farthest-side,
+ #c63300 0px, #c63300 50%,
+ #c63300 50%, transparent 100%)
+ ;
+
+}
+
+
+body > header a,
+body > header a:visited {
+
+ color: black;
+}
+
+@media screen and (max-width: 35.374rem) {
+
+ body > header nav {
+
+ text-align: left;
+ }
+
+ body > header nav ul li {
+
+ margin-left: 1rem;
+ }
+
+ body > header nav a,
+ body > header nav a:visited {
+
+ color: white;
+ }
+}
+
+@media screen and (min-width: 35.375rem) {
+
+ body > header nav {
+
+ position: relative;
+ z-index: 10000;
+ }
+
+ body > header nav a {
+
+ background-color: hsl(25, 100%, 41.6%, 1);
+ box-shadow: 0 0 2rem hsl(25, 100%, 41.6%);
+ z-index: 10000;
+ font-weight: bold;
+ border-bottom: 0.5rem solid black;
+ padding: 0.25rem 1rem;
+ transition-duration: 0.666s;
+ transition-property: color, background-color, border-bottom-color;
+ }
+
+ body > header nav a:hover {
+
+ border-bottom-color: white;
+ color: white;
+ background-color: #c63300;
+ }
+}
+
+
+body header:before,
+body header:after,
+body header > :first-child:before {
+
+ content: ".";
+ color: transparent;
+ position: absolute;
+ display: block;
+ overflow: visible;
+}
+
+
+body header:before {
+
+ z-index: 48;
+
+ left: 50vw;
+ width: 12.5rem;
+ margin-left: -6.25rem;
+
+ top: 10rem;
+ margin-top: -6.25rem;
+ height: 12.5rem;
+
+ background: var(--soleil3);
+ box-shadow: 0 -25px 50px var(--soleil4);
+}
+
+
+body header:after {
+
+ z-index: 49;
+
+ left: 50vw;
+ width: 9rem;
+ margin-left: -4.5rem;
+
+ top: 10rem;
+ margin-top: -4.5rem;
+ height: 9rem;
+
+ background: var(--soleil2);
+}
+
+
+body header > :first-child:before {
+
+ z-index: 50;
+
+ left: 50vw;
+ width: 6.25rem;
+ margin-left: -3.125rem;
+
+ top: 10rem;
+ margin-top: -3.125rem;
+ height: 6.25rem;
+
+ background: white;
+}
+
+body header > :first-child * {
+
+ position: relative;
+ z-index: 100;
+}
+
+footer {
+
+ color: white;
+}
+
+footer a, footer a:visited {
+
+ border-bottom: 0.067rem dotted;
+ text-decoration: none;
+ color: inherit;
+ font-weight: bold;
+}
diff --git a/css/t-day.css b/css/t-day.css
new file mode 100644
index 0000000..8f2ff6a
--- /dev/null
+++ b/css/t-day.css
@@ -0,0 +1,62 @@
+:root {
+
+ --nuage-1: hsl(60, 100%, 97.6%);
+ --nuage-2: hsl(48, 20%, 80.4%);
+ --bleu-ciel: hsl(215.3, 91.1%, 78%);
+}
+
+body {
+
+ background: var(--bleu-ciel);
+ background-image: url("sprites/default_water.png"); /* fallback */
+ background-image:
+ linear-gradient(var(--bleu-ciel) 0%, var(--bleu-ciel) 10rem, transparent 25rem),
+ url("sprites/default_water.png");
+ background-size:
+ auto,
+ 192px;
+}
+
+body > header .sitedesc {
+
+ color: #2e2c36;
+}
+
+body > header nav a,
+body > header nav a:visited {
+
+ color: #333;
+ background: var(--nuage-1);
+ padding: 0.5rem 2rem;
+}
+
+body > header nav li a {
+
+ border-bottom: 0.125rem solid var(--nuage-2);
+}
+
+@media (min-width: 34.375rem) {
+
+ body > header nav li:first-of-type a {
+
+ border-left: 0.125rem solid var(--nuage-2);
+ }
+
+ body > header nav li:last-of-type a {
+
+ border-right: 0.125rem solid var(--nuage-2);
+ }
+}
+
+
+main > h1,
+main > h2 {
+
+ color: white;
+ text-shadow: 0 0 0.5rem hsla(0, 0%, 0%, 0.75);
+}
+
+body > footer {
+
+ background: linear-gradient(transparent 0%, white calc(100% - 2rem));
+}
diff --git a/css/t-night.css b/css/t-night.css
new file mode 100644
index 0000000..5ee80df
--- /dev/null
+++ b/css/t-night.css
@@ -0,0 +1,47 @@
+
+
+body {
+
+ background-color: rgb(0, 4, 9);
+ background-image: url("ciel-etoile.png");
+ background-repeat: repeat;
+ color: white;
+}
+
+body > header a,
+body > header a:visited {
+
+ color: white;
+}
+
+
+@media screen and (max-width: 35.374rem) {
+
+ body > header nav {
+
+ text-align: left;
+ }
+
+ body > header nav ul li {
+
+ margin-left: 1rem;
+ }
+}
+
+@media screen and (min-width: 35.375rem) {
+
+ body > header nav a,
+ body > header nav a:visited {
+
+ background-color: white;
+ color: rgb(0, 4, 9);
+ border-radius: 50%;
+ padding: 0.5rem 1rem;
+ box-shadow: 0 0 0.5rem white;
+ }
+
+ body > header nav {
+
+ overflow: visible;
+ }
+}
diff --git a/developper.php b/developper.php
new file mode 100644
index 0000000..3a2174f
--- /dev/null
+++ b/developper.php
@@ -0,0 +1,85 @@
+
+
+Contribuer au développement de Juneland
+
+Défis en cours
+
+
+
+
+ Récompense
+ Défi
+
+
+
+
+
+
+ 50 DUĞ1
+
+
+ Construire un aérodrome
+ (quand un mod adéquat sera prêt)
+
+
+
+
+ 100 DUĞ1
+
+
+ Importer un mini monde de 100×100
+
+
+
+
+
+
+Défis relevés
+
+
+
+
+ Récompense
+ Défi
+ Réalisé
+
+
+
+
+
+
+ 50 DUĞ1
+
+
+ Construire un métro
+
+
+ par tuxmain
+
+
+
+
+ 100 DUĞ1
+
+
+ Exporter ses messages Scuttlebutt depuis Juneland
+
+
+ par Be1
+
+
+
+
+
+
+
+
+
+
Guides Juneland / Minetest
+
+
+
+
+
+
+
+Les boites aux lettres dans Juneland
+
+À quoi servent les boites aux lettres ?
+
+Comment laisser un message dans une boites aux lettres ?
+
+
+ Il vous faudra un livre.
+
+
+ Pour obtenir un livre, cherchez book dans votre inventaire.
+
+
+
+
+
+
+
+
+Ouvrir une boutique G1 dans Juneland
+
+Où construire sa boutique ?
+
+Sécuriser sa boutique pour que personne ne puisse la détruire
+
+Exemples de boutiques
+
+
+
+
+ Boutique d'Attilax
+
+
+
+ Boutique Le Chant des Fleurs
+
+
+
+ Boutique de tuxmain
+
+
+
+
+
+Constuire, casser, et gérer l'inventaire
+
+
+
+
+
+ Action
+ Touche par défaut
+
+
+
+
+
+
+ Détruire / Miner
+ Clic gauche
+
+
+
+ Afficher l'inventaire
+ I
+
+
+
+
+ Construire
+ Clic droit
+
+
+
+
+
+Plan Local d'Urbanisme
+
+Construisez où vous voulez, de préférence espacé des autres constructions.
+
+
+
+
+
+
+Discuter avec d'autres joueurs grâce à Mumble
+
+Pour discuter en audio pendant que vous jouez, vous pouvez utiliser notre instance Mumble par l'un des deux moyens suivants :
+
+
+
+
+
+
+
+Installer Minetest
+
+Minetest est disponible sur les plateformes suivantes :
+
+
+ GNU/Linux
+ Android
+ Windows
+ MacOS
+ FreeBSD, OpenBSD, DragonFly BSD
+
+
+
+ Le serveur JuneLand requiert au moins la version 5.2 .
+
+
+
+
+
+
Installer Minetest sous GNU/Linux
+
+
+ Choisissez la version correspondant à votre système sur le site officiel .
+
+
+
Le serveur JuneLand requiert au moins la version 5.2 .
+
+
Sur certaines versions (ex: Debian/Ubuntu stable), la version du paquet Minetest peut être trop ancienne.
+
+
+
Comment avoir la bonne version
+
+
Vérifiez la version dans votre gestionnaire de paquets :
+
+
sudo apt list minetest
+
+
+ Si la version proposée par votre distribution est supérieure à la 5.2, installez-la.
+ Sinon, deux choix s'offrent à vous :
+
+
+
+
+
+
+
+
+
+
+
Installer Minetest sous Windows
+
+
+ Téléchargez le fichier ZIP sur le site officiel
+ Décompressez le fichier ZIP
+ Allez dans le dossier "bin"
+ Lancez l'exécutable qui finit par .exe
+
+
+
+
+
+
Installer Minetest sous MacOS
+
+
Vous pouvez installer Minetest via Homebrew :
+
+
brew install minetest
+
+
+
+
+
+
Installer Minetest sous FreeBSD, OpenBSD, DragonFly BSD
+
+
+
+
+
+
+
+
+Comment utiliser la monnaie libre Ğ1 dans Juneland
+
+
+Pour échanger en Ğ1 dans JuneLand Survival, on utilise un jeton intermédiaire, le MineGeld (MG).
+
+Vous pouvez voir les MG un peu comme les tickets boisson dans les festivals.
+
+Les joueurs peuvent échanger dans Juneland en troquant des objets contre des MG. Il est aussi possible d'échanger directement les objets (troc).
+
+
+Utiliser ses Ğ1
+
+Pour obtenir acheter des MG, envoyez une transaction à DFQ3eHm9GCRsvhtkZMup8sd4WcuQ3wsEr79JpqtyAfzy avec pour commentaire MG suivi de votre pseudo sur MineTest.
+
+Allez ensuite à la ĞBanque dans JuneLand Survival, vos MG seront apparues dans le coffre où est inscrit votre pseudo. Nous faisons cette opération manuellement ; il faudra parfois attendre quelques jours.
+
+
+Gagner des Ğ1
+
+Si vous avez beaucoup de MG, vous pouvez les échanger contre des Ğ1.
+
+Vous trouver les instructions pour faire cette opération directement dans Juneland Survival.
+
+
+Taux de conversion
+
+1 Ğ1 = 10 MG
+
+
+
+
+
+ Les panneaux dans Minetest
+
+
+ Les panneaux peuvent remplir plusieurs fonctions.
+
+
+
+ Vous pouvez par exemple les utiliser pour
+ signaler des choses aux autres joueurs,
+ poser une question, y répondre,
+ ou même créer un livre d'or en accolant plusieurs panneaux les uns à côtés des autres.
+
+
+
+ Sur Juneland Creative, vous trouverez des panneaux dans votre inventaire en tapant sign (ce qui veut dire panneau en anglais)
+
+
+
+
+
+ Action
+ Touche par défaut
+
+
+
+
+
+
+ Afficher l'inventaire
+ I
+
+
+
+
+ Poser un panneau
+ Clic droit sur une surface
+
+
+
+
+ Écrire sur un panneau
+ Clic droit sur le panneau
+
+
+
+
+ Formatter son texte
+
+
+ Vous pouvez changer la couleur du texte et la couleur du fond grâce à des codes à placer en début de ligne, de #0 jusqu'à #9 .
+
+
+
+
+
+
+Rejoindre un serveur Juneland
+
+
+ Pour rejoindre un monde Juneland, vous devez d'abord connaître l'adresse et le port auxquels vous devez vous connecter, en fonction du monde que vous avez choisi.
+
+
+Liste des mondes disponibles pour l'instant
+
+
+
+
+ Nom
+ Description
+ Adresse
+ Port
+
+
+
+
+
+ JuneLand Creative
+ un monde créatif où les ressources sont illimitées, on peut voler et se téléporter. On y construit ce qu'on veut sans limites.
+ juneland.fr
+ 30000
+
+
+
+ JuneLand Survival
+ un monde survie où il faut récolter, chasser, miner et bricoler pour vivre et pouvoir construire des machines. On peut y échanger des ressources en monnaie libre Ğ1.
+ juneland.fr
+ 30001
+
+
+
+
+Rejoindre un monde
+
+
+ Démarrez MineTest
+ Allez dans rejoindre une partie
+ Choisissez un nom d’utilisateur
+ Choisissez un mot de passe ; il n'a pas besoin d'être aussi fort que votre mot de passe Ğ1
+ dans server , tapez l'adresse du monde choisi (ex : juneland.fr )
+ dans port indiquez le port du monde choisi (30000 ou 30001).
+
+
+
+ Pour taper des chiffres , les touches du pavé numérique ne fonctionnent pas.
+ Utilisez plutôt les chiffres en haut du clavier. Le copier-coller fonctionne, mais parfois il faut essayer plusieurs fois.
+
+
+
+
+
+
+
+
+Se déplacer dans Juneland
+
+
+
+ Lorsque vous apparaissez dans JuneLand, vous pouvez réassigner les touches du clavier à votre goût
+ en appuyant sur Échap puis changer touches .
+
+
+
+
+
+
+ Action
+ Touche par défaut
+
+
+
+
+
+ Avancer
+ Z
+
+
+ Reculer
+ S
+
+
+ Gauche
+ Q
+
+
+ Droite
+ D
+
+
+ Sauter
+ Espace
+
+
+
+ Accélérer
+
+
+
+
+ Se téléporter
+
+ /teleport x y z
+ (le y est la hauteur)
+
+
+
+
+ Afficher les coordonnées de la position actuelle (pour éventuellement s'y téléporter plus tard)
+
+ F5
+
+
+
+
+ Monter une échelle
+ Espace
+
+
+
+ Se baisser
+ Maj / Shift
+
+
+
+ Descendre
+ Maj / Shift
+
+
+
+ Activer (ouvrir une porte, par exemple)
+ Clic droit
+
+
+
+ Voler
+ K ou double Espace
+
+
+
+ Afficher la minicarte
+ F9
+
+
+
+ Chat / Console
+ T
+
+
+
+ Menu / Quitter
+ Échap
+
+
+
+
+
+
+
+
+
+
+
+
+
+Six raisons de venir sur Juneland
+
+
+
+ Faites les boutiques en 3D
+
+
+
+
+
+ Juneland Creative permet de faire les magasins à l'ancienne. Promenez-vous dans les quartiers commerçants et visitez la boutique de chaque juniste pour découvrir qui produit quoi, et voir ce que vous pouvez acheter avec vos Ğ1. Faire du shopping n'a jamais été aussi sympa.
+
+
+
+
+ Rencontrez d'autres junistes
+
+
+
+
+ La licence Ğ1 stipule que, pour certifier quelqu'un afin qu'il rentre dans la toile de confiance Ğ1,
+ il faut bien le connaître , et l'avoir rencontré dans la vraie vie.
+
+
+
+ Avant ça, pourquoi ne pas commencer à faire connaissance en ligne ?
+ Et quoi de plus convivial pour un premier contact qu'un jeu vidéo ?
+
+
+ Au choix, vous pouvez chatter dans Minetest, ou parler de vive voix grâce à
+ notre serveur Mumble .
+
+
+ Si on peut dire de nos parcs d'attractions qu'ils sont "virtuels", les rencontres qu'ils facilitent,
+ elles, sont bien réelles !
+
+
+
+
+ Gagnez des Ğ1
+
+
+
+
+ Dans Juneland Survival , vous pouvez échanger des objets en MG, des jetons de Ğ1.
+
+
+ Vous pouvez ensuite convertir ces MG en Ğ1 pour acheter des objets dans la "vraie vie", par exemple sur gchange.fr .
+
+
+
+
+ Créez à plusieurs
+
+
+
+
+ Juneland Creative , c'est aussi, et avant tout, un espace de création artistique dédié au monde du libre en général.
+
+
+
+ Faites un tour sur L'île du libre pour y ajouter votre logiciel préféré.
+
+
+
+
+
+ Construisez votre boutique
+
+
+
+
+
+ Quel meilleur moyen pour faire la promo de ce que vous vendez que d'avoir votre propre boutique ? Dans Juneland Creative , vous aurez pignon sur rue !
+
+
+
+
+
+ Jouez
+
+
+
+
+
+ MineTest est avant tout un jeu, et jouer est indispensable au bien-être d'un être humain.
+
+
+ Juneland Survival est un jeu en lui même : il faut survivre aux attaques des monstres.
+
+
+ Juneland Creative offre lui aussi son lot de jeux, comme la course de sièges.
+
+
+
+
+Deux mondes, deux ambiances
+
+
+ JuneLand Creative
+
+
+
+
+ JuneLand Creative est un monde dédié à la promotion des vendeurs de la Ğ1. On y fait les boutiques ou on construit la sienne.
+ On admire les oeuvres d'art créées par les autres junistes ou on crée la sienne.
+ Les ressources y sont illimitées. On peut voler et se téléporter. On y construit ce qu'on veut sans limites.
+
+
+
+ MineTest
+ juneland.fr
+ 30000
+
+
+
+ JuneLand Survival
+
+
+
+
+
+ JuneLand Survival est un monde survie où il faut récolter, chasser, miner et bricoler pour vivre et pouvoir construire des machines.
+ On peut gagner des Ğ1 en vendant des ressources, ou au contraire utiliser ses Ğ1 pour obtenir des ressources.
+
+
+
+ MineTest
+ juneland.fr
+ 30001
+
+
+
+
+Comment venir visiter Juneland
+
+
+
+
+ slides.length) {slideIndex = 1}
+ if(n < 1) {slideIndex = slides.length}
+ for(i = 0; i < slides.length; i++) {
+ slides[i].style.display = "none";
+ }
+ for(i = 0; i < dots.length; i++) {
+ dots[i].className = dots[i].className.replace(" slide-active", "");
+ }
+ slides[slideIndex-1].style.display = "block";
+ dots[slideIndex-1].className += " slide-active";
+}
diff --git a/soutenir.php b/soutenir.php
new file mode 100644
index 0000000..2e04486
--- /dev/null
+++ b/soutenir.php
@@ -0,0 +1,153 @@
+
+
+Soutenir le développement de Juneland
+
+
+Merci aux donateurs !
+getDonors();
+
+if (empty($donors)) {
+
+ echo _('Pas encore de donateurs');
+
+} else {
+
+ echo '';
+}
+?>
+
+Que soutenez-vous ?
+
+ En donnant à Juneland, vous nous aidez à financer les défis développeurs :
+ on met les développeurs aux défi de coder une fonctionnalité pour enrichir Juneland. Celui qui l'accomplit remporte le prix.
+
+
+Comment donner
+
+
+
+ Copiez la clef de notre compte Ğ1 dans votre presse-papier :
+
+
+
+
+
+ Copier la clef
+
+
+
+
+
Et maintenant collez-la dans votre client Ğ1 (Cesium par exemple) afin de faire votre don 😉
+
Merci pour votre générosité ❤️
+
+
+
+
+État actuel des finances
+
+Le projet est actuellement en bonne santé financière.
+
+
+
+
+
+
+setTarget(1000);
+$chart = new Chart($CF);
+
+$amountCumulativeGraph = new Graph($chart->getAmountCollectedByDayCumulativePoints(), _('Montant total récolté'));
+$amountCumulativeGraph->setStyle('type', 'line');
+$amountCumulativeGraph->setStyle('borderColor', '#662b00');
+$amountCumulativeGraph->setStyle('backgroundColor', 'green');
+$amountCumulativeGraph->setStyle('lineTension', 0);
+$amountCumulativeGraph->setStyle('pointRadius', 1);
+$amountCumulativeGraph->setStyle('borderWidth', 2);
+$amountCumulativeGraph->setStyle('steppedLine', true);
+$chart->addGraph($amountCumulativeGraph);
+
+$footerScripts = '';
+
+$footerScripts .= $chart->getScripts('fr', '#chart', ROOT_URL . 'vendor/crowdfunding2/');
+
+$footerScripts .= '
+';
+
+include 'templates/footer.php';
+
diff --git a/templates/footer.php b/templates/footer.php
new file mode 100644
index 0000000..3d4d47e
--- /dev/null
+++ b/templates/footer.php
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+ MineTest
+ juneland.fr
+ 30000
+
+
+ MineTest
+ juneland.fr
+ 30001
+
+
+ Mumble 🎧
+ juneland.fr
+ 64738
+
+
+
+
+ CopyLeft 2020 Pascal Engélibert, Boris Paing – Bannière : Attilax – Contenu sous CC BY-SA 4.0 , code sous GNU AGPL v3 .
+
+
+
+
+
+