@import '../colours';

.message {
  --message-base-color: var(--fr--color-info, var(--fr--color-sky-white));

  /* fallback if second line not supported */
  box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2);
  box-shadow: 0px 1px 3px 0px
    oklch(from var(--message-base-color) 20% c h / 0.2);
  background-color: color-mix(in srgb, var(--message-base-color) 5%, white);

  padding: 0.5rem 1rem 0.5rem 0.5rem;
  margin-bottom: $global-margin * 0.5;

  display: grid;
  grid-template-areas:
    'border icon title dismiss'
    'border . text .'
    'border . subtitle .';
  grid-template-columns: 1rem minmax(0, max-content) auto minmax(0, max-content);

  & > svg {
    color: var(--message-base-color);
  }

  &--icon-align-center {
    align-self: center;
  }

  &--icon-align-top {
    align-self: start;
  }

  & > svg {
    grid-area: icon;
    height: 1.5rem;
    margin-right: 0.5rem;
  }

  &--no-shadow {
    box-shadow: none;
  }

  &__side-border {
    grid-area: border;
    width: 0.25rem;
    height: auto;
    background-color: var(--message-base-color);
  }

  &__title {
    grid-area: title;

    &--no-icon > * {
      color: var(--fr--color-weldon-blue);
    }
  }

  &__text {
    grid-area: text;
  }

  &__subtitle {
    margin-left: 1rem;
    color: var(--fr--color-weldon-blue);
    grid-area: subtitle;
  }

  &__dismiss {
    cursor: pointer;
    grid-area: dismiss;
    align-self: start;
    position: relative;
    width: 1.5em;
    height: 1.5em;
    z-index: 0;

    &::after {
      content: '';
      position: absolute;
      background: var(--fr--color-gainsborough);
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      border-radius: 50%;
      z-index: -1;
      opacity: 0;

      transition: opacity ease-in-out 0.1s;
    }

    &:hover,
    &:focus {
      &::after {
        opacity: 1;
      }
    }
  }

  &--warning {
    --message-base-color: var(--fr--color-warning);
  }

  &--failure {
    --message-base-color: var(--fr--color-failure);
  }

  &--success {
    --message-base-color: var(--fr--color-success);
  }

  &--info {
    --message-base-color: var(--fr--color-info);
  }
}
