+/* Header */
+#header {
+       background-color: #cff;
+       border: .1rem solid #136;
+       border-top: 0;
+       border-left: 0;
+       border-radius: 0 0 .5rem .5rem;
+       margin: 0 .5rem .5rem;
+       display: flex;
+       flex-direction: column;
+       justify-content: space-between;
+       font-weight: bold;
+       line-height: 45px;
+       padding: .5rem;
+       gap: .5rem;
+}
+
+#header div {
+       display: flex;
+       flex-direction: row;
+       justify-content: space-between;
+       gap: .5rem;
+}
+
+#logo {
+       padding: 0;
+       white-space: nowrap;
+       color: #09c;
+       text-shadow: 1.5px 1.5px 3px #136;
+       text-decoration: none;
+       display: flex;
+       font-family: 'Lemon', sans-serif;
+       font-size: 2rem;
+       line-height: 45px;
+       gap: .5rem;
+}
+
+#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);
+}