:root {
  --message-border-radius: var(--radius-conditional-2);

  --message-basic-background-color: oklch(from var(--canvas-text) l c h / 10%);
  --message-basic-border-color: var(--canvas-text);
  --message-basic-color: var(--canvas-text);

  --message-notice-background-color: oklch(from var(--color-green) 80% c h / 8%);
  --message-notice-border-color: var(--color-green);
  --message-notice-color: var(--color-green);

  --message-warning-background-color: light-dark(oklch(from var(--color-orange) l c h / 8%), oklch(from var(--color-orange) l c h / 28%));
  --message-warning-border-color: light-dark(oklch(from var(--color-orange) 60% 40% h), var(--color-yellow));
  --message-warning-color: light-dark(oklch(from var(--color-orange) 60% 40% h), var(--color-yellow));

  --message-error-background-color: oklch(from var(--color-red) 80% c h / 8%);
  --message-error-border-color: var(--color-red);
  --message-error-color: var(--color-red);
}

:not(.field) > .message {
  margin: 1rem 0;
  display: flex;
  justify-content: space-between;

  border: 1px solid var(--message-basic-border-color);
  background-color: var(--message-basic-background-color);
  color: var(--message-basic-color);
  border-radius: var(--message-border-radius, 0.25rem);
  padding: 0.75em;
  margin: 1rem 0;

  &>*:first-child {
    margin-top: 0;
  }

  &>*:last-child {
    margin-bottom: 0;
  }

  & p {
    color: inherit;
  }

  & [rel="prev"] {
    cursor: pointer;
  }

  &.notice {
    background-color: var(--message-notice-background-color);
    color: var(--message-notice-color);
    border-color: var(--message-notice-border-color);

    svg * {
      stroke: var(--message-notice-color);
    }
  }

  &.warning {
    background-color: var(--message-warning-background-color);
    color: var(--message-warning-color);
    border-color: var(--message-warning-border-color);

    svg * {
      stroke: var(--message-warning-color);
    }
  }

  &.error {
    background-color: var(--message-error-background-color);
    color: var(--message-error-color);
    border-color: var(--message-error-border-color);

    svg * {
      stroke: var(--message-error-color);
    }
  }

  &.green {
    background-color: var(--message-green-background-color);
    color: var(--message-green-color);
    border-color: var(--message-green-border-color);

    svg * {
      stroke: var(--message-green-color);
    }
  }
}

.flash {
  /* the wrap will allow to hide the content of flash completely, using the technique used in
     visibility_state.css and visibility_state.js */
  div.wrap > .message {
    margin: 0;

    &:first-of-type {
      margin-block-start: 1rem;
    }
  }
}