+#logo img,
+#logo span {
+ margin: 0 auto;
+}
+
+#title {
+ margin: .25rem 0 0;
+ padding: 0;
+ border-bottom: 0 none;
+ text-align: right;
+ flex: 1 1 auto;
+ font-family: 'Lemon', sans-serif;
+ font-weight: normal;
+ /*white-space: nowrap;*/
+}
+
+#title a {
+ text-decoration: none;
+ color: #09c;
+ text-shadow: 1.5px 1.5px 3px #136;
+ /*overflow-x: hidden;
+ text-overflow: ellipsis;*/
+}
+
+#nav {
+ display: flex;
+ flex-wrap: wrap;
+ gap: .5rem;
+ line-height: 2.5rem;
+ margin: 0;
+ border: 0 none;
+}
+
+#nav a {
+ flex: 1 1 auto;
+ border: .1rem solid #136;
+ border-top: 0;
+ border-left: 0;
+ border-radius: .2rem;
+ background-color: #00c3f9;
+ color: #136;
+ text-align: center;
+ padding: 0 .25rem;
+}
+
+/* Message */
+.message {
+ margin: 0 .5rem .5rem;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ font-size: .9rem;
+ padding: .2rem;
+ border-radius: .2rem;
+ text-align: center;
+ border: .05rem solid transparent;
+}
+
+.message::before,
+.message::after {
+ margin: auto 0;
+ padding: 0 .25rem;
+}
+
+.message ul {
+ margin: 0;
+ padding: 0;
+ list-style: none inside none;
+ gap: .1rem;
+}
+
+.message li {
+ padding: .25rem;
+}
+
+.mortal,
+.mortal button,
+.mortal select {
+ /*border-color: #c33333;
+ color: #c33333;*/
+ border-color: #930;
+ background-color: #f9c3c3;
+ color: #930;
+}
+
+.dangerous,
+.mortal {
+ border-radius: .2rem;
+ padding: .5rem 0;
+}
+
+.error {
+ border-color: #c33333;
+ background-color: #f9c3c3;
+ color: #c33333;
+}
+
+.error::before,
+.error::after {
+ /*XXX: display /!\ symbol */
+ content: "⚠";
+}
+
+.notice {
+ border-color: #3333c3;
+ background-color: #c3c3f9;
+ color: #3333c3;
+}
+
+.notice::before,
+.notice::after {
+ /*XXX: see https://www.fileformat.info/info/unicode/char/2139/fontsupport.htm
+ * DejaVu Sans/FreeSans/FreeSerif/Linux Libertine/Symbola/Unifont*/
+ /*XXX: display i symbol */
+ content: "ℹ";
+ /*XXX: display # symbol */
+ /*content: "⌘";*/
+}
+
+.dangerous,
+.dangerous button,
+.dangerous select {
+ /*border-color: #c39333;
+ background-color: #f9c333;
+ color: #936333;*/
+ border-color: #930;
+ background-color: #fc9;
+ color: #930;
+}
+
+.warning {
+ border-color: #c39333;
+ background-color: #f9c333;
+ color: #936333;
+}
+
+.warning::before,
+.warning::after {
+ /*XXX: see https://www.fileformat.info/info/unicode/char/2139/fontsupport.htm
+ * DejaVu Sans/FreeSans/FreeSerif/Linux Libertine/Symbola/Unifont*/
+ content: "?";
+ /*XXX: display # symbol */
+ /*content: "⌘";*/
+}
+
+/* Dashboard */
+#dashboard,
+#form,
+#recover,
+#regulation {
+ /*border-radius: .5rem;*/
+ /*border: .1rem solid #00c3f9;
+ margin: .5rem;
+ margin-top: 0;
+ display: flex;
+ flex-direction: column;*/
+}
+
+.panel {
+ display: flex;
+ flex-direction: row;
+ margin: 0 .5rem .5rem;
+ gap: .5rem;
+}
+
+.cell {
+}
+
+.grid {
+ display: grid;
+ border-style: solid;
+ border-color: #00c3f9;
+ border-radius: .2rem;
+ box-sizing: border-box;
+ border-collapse: collapse;
+ flex: 1 1 auto;
+ margin: 0 0 auto 0;
+ padding: 0;
+ gap: .1rem;
+}
+
+.grid article,
+.grid section {
+ border-collapse: inherit;
+ /*border-radius: inherit;*/
+ border-style: inherit;
+ /*border-width: .1rem;
+ border-width: inherit;*/
+ box-sizing: inherit;
+ flex-grow: inherit;
+ margin: 0;
+ min-height: 5rem;
+ overflow: hidden;
+}
+
+/*.grid header {
+ border-radius: .2rem .2rem 0 0;
+ margin-bottom: 0;
+}*/
+
+/*.grid ul {
+ margin: .1rem;
+ padding: .1rem;
+ margin: 0;
+}*/
+
+/*.grid section {
+ border-color: inherit;
+}*/
+
+/*.grid ul {
+ display: block;
+ margin: .1rem;
+ font-size: .8rem;
+ list-style: none inside none;
+}*/
+
+.grid li {
+ border-width: .1rem;
+ border-style: solid;
+ border-radius: .2rem;
+ white-space: nowrap;
+ padding: .1rem;
+ display: flex;
+ margin: 0 0 .1rem;
+ flex-direction: row;
+ justify-content: space-between;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+}
+
+/*XXX: required by ul display:block for overflow:hidden*/
+.grid li:only-child,
+.grid li:last-child,
+.grid li:last-of-type {
+ margin: 0;
+}
+
+.grid a {
+ /*TODO: voir pourquoi on a besoin d'un overflow-y de merde, sans une putain de scrollbar s'affiche dans certaines conditions sur chrome, depuis le passage de deux lignes de grid à 3 !!!*/
+ /*Est-ce parce que le city est pas expanded ???*/
+ overflow-y: clip;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+}
+
+.grid p {
+ padding: 0 0 .3rem;
+ margin: 0;
+}
+
+.grid p:only-child,
+.grid p:last-child,
+.grid p:last-of-type {
+ padding: 0;
+}
+
+.session header {
+ margin-bottom: .5rem;
+}
+
+.current {
+ filter: hue-rotate(-90deg) saturate(2);
+}
+
+.granted {
+ background-color: #cff;
+ border-color: #00c3f9;
+}
+
+/*.granted,
+.granted a {
+ background-color: #cff;
+ border-color: #00c3f9;
+}
+
+.disputed,
+.disputed a {
+ border-color: #930;
+ background-color: #fc9;
+ color: #930;
+}*/
+
+.highlight {
+ filter: hue-rotate(60deg);
+}
+
+.canceled {
+ filter: hue-rotate(180deg) grayscale(33%);
+}
+
+.locked {
+ filter: hue-rotate(180deg);
+}
+
+.pending {
+ filter: grayscale(33%);
+}
+
+.disabled {
+ filter: grayscale(66%);
+}
+
+/*.canceled,
+.canceled a,
+.canceled h2,
+.canceled header {
+ color: #963;
+ background-color: #fddddd;
+ border-color: #963;
+}
+
+.locked,
+.locked a {
+ border-color: #930;
+ background-color: #f9c3c3;
+ color: #930;
+}
+
+.pending,
+.pending a {
+ background-color: #ccc;
+ border-color: #066;
+}
+
+.highlight,
+.highlight a,
+.highlight h3,
+.highlight h3 a {
+ border-color: #3333c3;
+ background-color: #c3c3f9;
+ color: #606;
+}*/
+
+.calendar header {
+ margin-bottom: .1rem;
+ display: grid;
+}
+
+.calendar h3 {
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.calendar ul {
+ padding: 0 .1rem .1rem;
+}
+
+/*.ellipsis {
+ / *Required for ellipsis on h2/h3/h4 in header* /
+ display: grid;
+ margin-bottom: 0;
+}
+
+.ellipsis > * {
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}*/
+
+.calendar a {
+ display: grid;
+ /*grid-template-columns: 1fr auto fit-content(1fr);*/
+ grid-template-columns: max-content 1fr max-content;
+ flex: 1 1 auto;
+ grid-gap: .1rem;
+ /*XXX: reset to visible to prevent scroll*/
+ overflow-x: visible;
+}
+
+.calendar .reducible {
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ text-align: center;
+}
+
+.calendar .glyph {
+ font-family: 'Noto Emoji', 'Droid Sans', 'Symbola', 'DejaVu Sans', 'FreeSans', sans-serif;
+}
+
+.calendar .temperature,
+.calendar .rain,
+.calendar .rate {
+ line-height: 1rem;
+ text-align: right;
+}
+
+.calendar .rate {
+ text-align: center;
+}
+
+.calendar .info {
+ line-height: 1rem;
+ text-align: right;
+}
+
+.calendar .pseudonym {
+ grid-column: span 2;
+}
+
+.seven {
+ grid-template-columns: repeat(7, 1fr);
+}
+
+.four {
+ grid-template-columns: repeat(4, 1fr);
+}
+
+.three {
+ grid-template-columns: repeat(3, 1fr);
+}
+
+.two {
+ grid-template-columns: repeat(2, 1fr);
+}
+
+/*.city .grid h3,
+.location .grid h3,
+.city .grid h4,
+.location .grid h4 {
+ border-style: none;
+ margin: 0;
+ flex: 1 1 auto;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.city .grid article,
+.location .grid article {
+ min-height: auto;
+ height: fit-content;
+}
+
+.city .grid {
+ gap: .5rem;
+}*/
+
+.location form {
+ margin: .5rem auto;
+}
+
+.location form .row {
+ flex-direction: column;
+}
+
+.location form div {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.location label {
+ width: 20rem;
+ padding-right: 0;
+ text-align: center;
+}
+
+.location input,
+.location textarea {
+ width: 20rem;
+ margin: 0 .1rem;
+}
+
+.form {
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ gap: .5rem;
+}
+
+.form h2 {
+ font-size: 1.17rem;
+ padding: .4rem;
+}
+
+.form a {
+ white-space: nowrap;
+}
+
+.form section {
+ margin: 0;
+ border: .05rem solid #00c3f9;
+ /*border-radius: .2rem;*/
+ width: 100%;
+}
+
+.form form {
+ gap: .5rem;