/**
 * consent.css
 */

/* Component: Cookie Banner */
.cookie-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  position: fixed;
  inset: 0;
  padding: 16px;
  z-index: 9999;

  &[hidden] {
    display: none;
  }

  .backdrop {
    position: absolute;
    inset: 0;
    background: color-mix(in srgb, var(--color-black) 30%, transparent);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
  }

  .card {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 440px;
    max-height: calc(100dvh - 32px);
    overflow: hidden auto;
    border-radius: var(--border-radius-default);
    background: var(--color-white);
    color: var(--color-black);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
    outline: none;

    .header {
      flex: 0 0 auto;
      aspect-ratio: 2.35 / 1;
      width: 100%;
      background: var(--color-white-dark);
      overflow: hidden;

      img {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: cover;
      }

      img:not([src]),
      img[src=""] {
        display: none;
      }

      @media (max-height: 650px) {
        display: none;
      }
    }

    .body {
      display: flex;
      flex-direction: column;
      gap: 20px;
      padding: 24px 20px 20px 20px;
    }

    .intro-group {
      display: flex;
      flex-direction: column;
      gap: 12px;
    }

    .title {
      font-family: var(--font-family-headings);
      font-size: var(--font-size-h3);
      line-height: var(--line-height-h3);
    }

    .intro {
      font-size: var(--font-size-medium);
      line-height: var(--line-height-single);
      color: var(--color-grey-dark);
    }

    ul.options {
      list-style: none;
      padding: 0;
      display: flex;
      flex-direction: column;
      gap: 12px;

      li.option label {
        display: flex;
        flex-direction: row;
        align-items: flex-start;
        gap: 12px;
        cursor: pointer;

        input[type="checkbox"] {
          flex: 0 0 auto;
          width: 16px;
          height: 16px;
          margin: 2px 0 0;
          accent-color: var(--color-primary);
          cursor: pointer;
        }

        input[type="checkbox"][disabled] {
          cursor: not-allowed;
          opacity: 0.7;
        }

        .text {
          display: flex;
          flex-direction: column;
          gap: 4px;
          min-width: 0;
        }

        .name {
          font-size: var(--font-size-medium);
          font-weight: 600;
          line-height: 1.2;
        }

        .desc {
          font-size: var(--font-size-small);
          line-height: 1.35;
          color: var(--color-grey-dark);
        }
      }
    }

    .footer {
      display: flex;
      flex-direction: column;
      gap: 12px;
    }

    .actions {
      display: flex;
      flex-flow: row wrap;
      gap: 8px;
      justify-content: stretch;

      @media (max-width: 767px) {
        flex-direction: column;
      }

      .btn {
        flex: 1 1 0;
        appearance: none;
        border: 1px solid transparent;
        border-radius: var(--border-radius-default);
        padding: 10px 12px;
        font: inherit;
        font-size: var(--font-size-medium);
        font-weight: 600;
        line-height: 1.2;
        cursor: pointer;
        transition: var(--global-transition);

        &:focus-visible {
          outline: 3px solid color-mix(in srgb, var(--color-primary) 25%, transparent);
          outline-offset: 1px;
        }

        &.primary {
          background: var(--color-primary);
          color: var(--color-white);

          &:hover,
          &:focus {
            outline: 1px solid var(--color-primary);
            opacity: 0.8;
          }
        }

        &.ghost {
          background: transparent;
          color: var(--color-black);
          border-color: var(--color-grey-light);

          &:hover,
          &:focus {
            background: var(--color-white-dark);
          }
        }
      }
    }

    .footnote {
      font-size: var(--font-size-tiny);
      color: var(--color-grey);
      text-align: center;

      a {
        color: inherit;
        text-decoration: underline;
      }
    }
  }

  @media (prefers-reduced-motion: no-preference) {
    &:not([hidden]) .card {
      animation: cookie-banner-pop 180ms ease-out;
    }
  }
}

/* Component: Cookie Banner Re-open Button */
.cookie-banner-open {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-decoration: underline;
}

@keyframes cookie-banner-pop {
  from { transform: scale(0.96); opacity: 0; }
  to   { transform: scale(1); opacity: 1; }
}
