.timeline {
  --color: var(--indigo);
  display: flex;
  flex-direction: column;
  padding-left: 2em;
}
.timeline > section {
  display: flex;
  flex-direction: column;
  padding: 0.5em 0;
  position: relative;
}
.timeline .has-pin {
  position: relative;
}
.timeline .has-pin::after {
  content: '';
  position: absolute;
  width: 0.75em;
  height: 0.75em;
  left: -1em;
  top: 50%;
  background: var(--color);
  border-radius: 100%;
  transform: translate(-0.5em, -50%);
}
.timeline > section::before {
  content: '';
  position: absolute;
  top: 0;
  left: -1em;
  height: 100%;
  width: 0.25em;
  background: var(--color);
  transform: translateX(-100%);
}
.mosaique {
  position: relative;
  display: grid;
  flex: 1 1 0px;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(4, 1fr);
  gap: 1em;
  max-height: 90vh;
}
.mosaique > * {
  display: flex;
  flex-direction: column;
}
.mosaique > * > .little {
  padding: 1em;
}
.mosaique > * {
  background-color: var(--menu-background);
  border: 1px solid var(--stealth);
  border-radius: 0.5em;
  cursor: pointer;
  overflow: auto;
  position: relative;
}
.mosaique > * > .little {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--bg);
  opacity: 1;
  transition: all 200ms ease;
  z-index: 2;
  display: flex;
  flex: 1 1 0px;
}
.mosaique > * > .big {
  z-index: 1;
  display: flex;
}
.mosaique > *.open {
  background-color: var(--bg);
  border: none;
  position: absolute;
  top: 0;
  left: 0;
  min-width: 100%;
  min-height: 100%;
  grid-column: unset !important;
  grid-row: unset !important;
  flex: 1 1 0px;
  z-index: 20;
}
.mosaique > *.open > .little {
  display: none !important;
}
.mosaique > *.open > .big {
  display: flex !important;
  flex: 1 1 0px !important;
}
.mosaique > *.preview > .big {
  padding: 1em;
}
.mosaique > *.preview.open {
  max-height: 80vh;
}
.mosaique .close-button {
  position: absolute;
  z-index: 21;
  top: 0em;
  left: 0em;
  transform: translate(-50%, -50%);
  font-size: 2em;
}
.mosaique > *:not(.open) .aside-menu,
.mosaique > *:not(.open) .title-section {
  display: none;
}
.mosaique > *:not(.open) .lazySearchGrid {
  display: flex !important;
  flex-direction: column;
  gap: 0.66em;
}
.mosaique > *:not(.open):hover .little.fading {
  opacity: 0;
}
body.is-mobile .mosaique {
  display: flex;
  flex-direction: column;
  height: 100vh;
  flex: 1 1 0px;
  max-height: max-content;
}
body.is-mobile .mosaique > *:not(.open) {
  max-height: 20vh;
  overflow: auto;
}
body.is-mobile .mosaique > *.open {
  height: 100vh;
  overflow: visible;
}
#agenda {
  border-collapse: collapse;
  max-height: 90vh;
  position: relative;
}
.agenda-filler {
  border: 1px solid var(--highlight);
}
.agenda-legend {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  padding: 0.25em;
}
.agenda-legend > span {
  font-size: 0.8em;
  opacity: 0.75;
}
.agenda-legend.top {
  justify-content: flex-start !important;
}
.agenda-day-number {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  padding: 0.5em;
  font-size: 1.5em;
  background-color: blueviolet;
  border-radius: 100%;
  color: white;
  aspect-ratio: 1/1;
}
.agenda-day-name {
  min-height: fit-content;
}
.agenda.display-type-color .agenda-card {
  --color: var(--type);
}
.agenda-card {
  --color: var(--user);
  background-color: var(--color, blue);
  color: white;
  padding: 0.25em;
  margin: 0.5em;
  font-size: 0.75em;
  font-weight: 500;
  z-index: 10;
  position: relative;
}
.agenda-card .type-icon {
  z-index: 1;
  position: absolute;
  bottom: 0;
  right: 0;
  padding: 9px 6px 6px 9px;
  border-radius: 12px 0 0 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.agenda-card .invitation-section {
  z-index: 1;
  position: absolute;
  bottom: 0;
  left: 0;
  padding: 9px 6px 6px 9px;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
}
.invitation-section > * {
  width: 12px;
  height: 12px;
  border-radius: 12px;
  background-color: var(--color);
  border: solid 1px var(--stealth);
}
.agenda-card b {
  z-index: 2;
  white-space: nowrap;
  max-width: 40ch;
  text-overflow: hidden;
  overflow: hidden;
}
.agenda-card:hover {
  z-index: 13;
}
.color-picker {
  width: 1em;
  height: 1em;
  border-radius: 0.2em;
  background-color: var(--color);
}
.agenda-calendar {
  display: flex;
  flex-direction: column;
  gap: 0.2em;
}
.calendar-row {
  display: flex;
  flex-direction: row;
  gap: 0.2em;
}
.day-selector.inactive {
  background-color: var(--bg);
}
.day-selector.active {
  background-color: var(--primary);
  border-color: var(--primary);
  color: white;
}
.day-selector.contrast {
  border-color: var(--primary);
  border-width: 3px;
}
.day-selector {
  background-color: var(--highlight);
  border: solid 1px var(--stealth);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.9em;
  width: 1.75em;
  height: 1.75em;
  border-radius: 0.5em;
}
.day-selector.no-style {
  background-color: transparent !important;
  border: none !important;
}
.current-time-cursor {
  z-index: 12;
  position: relative;
  width: 100%;
  padding: 0.2em;
  max-height: 0.2em;
  background: #00cf6e;
  border-radius: 0 1em 1em 0;
}
.current-time-cursor .cursor {
  position: absolute;
  width: 0.8em;
  height: 0.8em;
  left: 0;
  transform: translate(-50%, -50%);
  background: #00cf6e;
  border-radius: 100%;
}
.moduler {
  display: grid;
  border-collapse: collapse;
}
.moduler-filler {
  border: solid 1px var(--highlight);
}
.moduler-resize-button {
  position: absolute;
  bottom: 1em;
  right: 1em;
  background: blue;
  width: 1.25em;
  height: 1.25em;
  border: none;
  opacity: 0.5;
  border-radius: 100%;
}
.moduler-close-button {
  position: absolute;
  top: 1em;
  right: 1em;
  background: red;
  width: 1em;
  height: 1em;
  border: none;
  opacity: 0.5;
  border-radius: 100%;
}
.moduler-card {
  margin: 0.5em;
  padding: 0.5em;
  background-color: var(--highlight);
  position: relative;
}
@keyframes blink {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.moduler-resizer {
  position: fixed;
  border: dashed 3px var(--turquoise);
  animation: blink 0.3s infinite;
}
.profile-picture,
.profile-picture-lg,
.profile-picture-sm {
  border-radius: 100%;
  aspect-ratio: 1/1;
  object-fit: cover;
  border: solid 1px transparent;
}
.profile-picture-lg {
  max-width: 6em;
}
.profile-picture-sm {
  max-width: 1.5em;
}
.subtle-checkbox {
  display: none;
}
.subtle-checkbox + * {
  position: relative;
  transition: all 200ms ease;
  padding: 0.25em 0.5em;
  cursor: pointer;
  border-radius: 0.5em;
  font-weight: 600;
  border: solid 1px var(--stealth);
}
.subtle-checkbox + *::after {
  content: '✓';
  position: absolute;
  right: 1em;
  opacity: 0;
  transform: rotate(180deg);
  transition: all 200ms ease;
}
.subtle-checkbox:checked + * {
  background-color: var(--blue);
  color: white;
}
.subtle-checkbox:checked + *::after {
  opacity: 1;
  transform: rotate(0deg);
}
.navbar:first-of-type {
  background-color: var(--navbar-color);
}
.second-navbar {
  z-index: 10;
  background-color: var(--second-navbar-color) !important;
  box-shadow: none;
}
.navbar-button {
  color: white;
}
.navbar a {
  padding: 0.5em;
  cursor: pointer;
}
[name='nav-menu'] a {
  cursor: pointer;
}
a,
a:visited,
.navbar .menu a,
nav .menu a:visited {
  color: var(--fg);
}
.navbar a,
.navbar a:visited {
  color: var(--nav-fg) !important;
}
.navbar:first-of-type {
  padding: 0 !important;
  padding-right: 1em !important;
}
.navbar img,
.nav-img {
  width: auto;
  max-width: 3em;
  height: 100%;
  aspect-ratio: 1/1;
}
.nav-dropdown img {
  cursor: pointer;
  max-width: 3em;
}
.nav-dropdown {
  box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.5);
}
.nav-dropdown {
  z-index: 999;
  display: flex;
  flex-direction: column;
  gap: 0;
  position: fixed;
  top: 0;
  left: 0;
  opacity: 0;
  transform: translateY(-100%);
  transition: all 200ms ease;
}
.nav-dropdown.active {
  opacity: 1;
  transform: translateY(3em);
}
.navbar .mobile-only {
  display: none;
}
[name='nav-menu'],
[name='nav-extra-menu'] {
  gap: 0;
  padding: 0.5em;
}
[name='nav-menu'] a:not(.button),
[name='nav-extra-menu'] a:not(.button) {
  border-radius: 0.5em;
  background: transparent;
  flex: 1 0 0px;
  padding: 0.5em;
  transition: all 200ms ease;
  text-decoration: none;
}
[name='nav-menu'] a:not(.button):hover,
[name='nav-extra-menu'] a:not(.button):hover {
  background: rgba(0, 0, 0, 0.1);
}
.navbar .menu section .button {
  padding: 0.25em !important;
  margin-left: auto;
}
input:required,
textarea:required {
  background: #ffbb0035;
  transition: background 500ms ease;
}
input:required:valid,
textarea:required:valid {
  background: #00ff2635;
}
.filter-section .filtered {
  display: none;
}
.filter-section.active .filtered {
  display: inherit;
  opacity: 0.5;
}
table.filter-section.active .filtered {
  display: table-row;
}
.flex-wrap > * {
  flex-grow: 1;
  flex-shrink: 1;
}
.flex-wrap.wrap-0 > * {
  flex-basis: Infinity%;
}
.flex-wrap.wrap-1 > * {
  flex-basis: 99%;
}
.flex-wrap.wrap-2 > * {
  flex-basis: 49%;
}
.flex-wrap.wrap-3 > * {
  flex-basis: 32.33333333%;
}
.flex-wrap.wrap-4 > * {
  flex-basis: 24%;
}
.flex-wrap.wrap-5 > * {
  flex-basis: 19%;
}
.flex-wrap.wrap-6 > * {
  flex-basis: 15.66666667%;
}
.flex-wrap.wrap-7 > * {
  flex-basis: 13.28571429%;
}
.flex-wrap.wrap-8 > * {
  flex-basis: 11.5%;
}
.flex-wrap.wrap-9 > * {
  flex-basis: 10.11111111%;
}
.flex-wrap.wrap-10 > * {
  flex-basis: 9%;
}
input:not(.subtle)[selection] {
  background: #2dc22d48;
  filter: none;
}
.dropbox {
  padding: 1em;
  border: dashed 3px var(--stealth);
  min-height: 10vh !important;
  display: flex;
  flex-direction: column;
  gap: 0.5em;
  max-height: 30vh !important;
  overflow-y: auto;
}
.dropbox .file {
  cursor: pointer;
  user-select: none;
}
.notification .number {
  right: -0.5em !important;
  top: -0.5em !important;
}
body.is-mobile nav img {
  display: none !important;
}
body.is-mobile nav .mobile-only {
  display: flex;
}
body.is-mobile nav:first-of-type {
  padding: 1em !important;
}
body.is-mobile .lazySearch {
  align-items: flex-start !important;
}
body.is-mobile svg {
  scale: 0.8;
}
body.is-mobile .card > * {
  padding: 0.75em;
}
body.is-mobile body {
  padding-bottom: 10vh;
}
body.is-mobile main {
  align-items: flex-start !important;
}
.pretty-progress::before {
  content: attr(value);
  font-size: 0.8em;
  left: -2em;
}
.pretty-progress::after {
  content: attr(max);
  font-size: 0.8em;
  right: -2em;
}
.notice-timeline {
  display: flex;
  flex-direction: row;
  gap: 0;
}
.timeline-element {
  width: 1em;
  height: 1em;
  border: solid 1px var(--stealth);
}
.timeline-element.gold {
  background: #ffd325;
}
.timeline-element.red {
  background: #dc3939;
}
.timeline-element.blue {
  background: #6464ff;
}
.window-tools {
  display: flex;
  flex-direction: column;
  position: fixed;
  bottom: 0;
  right: 1em;
  max-height: 2.5em;
  overflow: hidden;
  transition: all 1000ms ease;
}
.window-tools .title-section {
  border-radius: 1em 1em 0 0;
}
.window-tools > section {
  padding: 0.5em 1em;
  background: var(--bg);
  border: solid 1px var(--stealth);
}
.window-tools:hover {
  max-height: 100vh;
}
.treatment-calendar {
  display: flex;
  flex-direction: column;
  gap: 0;
  max-height: 75vh;
  overflow: scroll;
  padding-right: 0.33em;
}
.treatment-calendar .day {
  position: relative;
  width: 6em !important;
  min-height: 6em !important;
  border: solid 1px #AAA;
  display: flex;
  flex-direction: column;
  border-right: none;
  border-bottom: none;
  padding-bottom: 0.8em;
}
.treatment-calendar .day:last-child {
  border-right: 1px solid #AAA;
}
.treatment-calendar .week:last-child .day {
  border-bottom: 1px solid #AAA;
}
.treatment-calendar .week:nth-child(odd) {
  background-color: #DADADA;
}
.treatment-calendar .week {
  display: flex;
  flex-direction: row;
  gap: 0;
}
.treatment-calendar .day * {
  font-size: 0.8em;
  padding: 0.1em;
  font-weight: 600;
}
.treatment-calendar .day *[style] {
  color: white;
}
.treatment-calendar .day::after {
  content: attr(day);
  position: absolute;
  bottom: 0.1em;
  left: 0.1em;
  font-size: 0.5em;
  opacity: 0.5;
}
.treatment-calendar:not(.mode-device) .mode-device {
  display: none;
}
.treatment-calendar:not(.mode-medecine) .mode-medecine {
  display: none;
}
.lazySearch tr td {
  white-space: nowrap;
  max-width: 35ch;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0.5em;
}
.table.compact td,
.table.compact th {
  padding: 0.5em;
}
.image-preview > input {
  display: none;
}
.image-preview > input + image {
  width: 3em;
  aspect-ratio: 1/1;
  border: solid 1px var(--constrast);
}
.image-preview > input:checked + image {
  outline: solid 3px #6ba6ff;
}
.image-upload-section {
  position: relative;
  width: max-content;
}
.image-upload-section img {
  width: 3em;
  border-radius: 100%;
  aspect-ratio: 1/1;
}
.image-upload-section.small img {
  width: 1.5em;
}
.image-upload-section .edit-button {
  position: absolute;
  right: 0;
  top: 0;
  transform: translate(50%, -50%);
}
.evaluation-section {
  cursor: pointer;
}
.evaluation-section > svg:nth-child(1) {
  display: block;
}
.evaluation-section > svg:nth-child(2) {
  display: none;
}
.evaluation-section.checked > svg:nth-child(1) {
  display: none;
}
.evaluation-section.checked > svg:nth-child(2) {
  display: block;
}
#bigUploadGraph {
  width: 10em;
  height: 10em;
  position: relative;
}
#bigUploadLoadingGraph {
  position: absolute;
  top: 0;
  left: 0;
  border-radius: 100%;
  width: 100%;
  height: 100%;
}
#bigUploadLoadingGraphInfos {
  position: absolute;
  top: 20%;
  left: 20%;
  background: var(--bg);
  border-radius: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 60%;
  height: 60%;
  transition: all 50ms linear;
}
