/* Banner Component */
/* BEM: .c-banner */

.c-banner {
  /* Base banner styles */
  display: flex;
  align-items: flex-start;
  gap: var(--c-banner-gap, var(--ds-space-m));
  padding: var(--c-banner-padding, var(--ds-space-m));
  border: var(--c-banner-border-width, 1px) solid var(--c-banner-border-color, transparent);
  border-radius: var(--c-banner-border-radius, var(--ds-radius-s));
  background-color: var(--c-banner-background-color, var(--ds-color-status-info-weak));
  color: var(--c-banner-text-color, var(--ds-color-text));
  font-size: var(--c-banner-font-size, var(--ds-font-size-m));
  line-height: var(--c-banner-line-height, var(--ds-line-height-l));
  position: relative;
}
.c-banner--full-width {
  width: 100%;
}

/* Banner icon */
.c-banner__icon {
  flex-shrink: 0;
  width: var(--c-banner-icon-size, 1.25rem);
  height: var(--c-banner-icon-size, 1.25rem);
  margin-top: 0.125rem; /* Align with first line of text */
  stroke: var(--c-banner-icon-color, currentColor);
  fill: none;
}

/* Banner content */
.c-banner__content {
  flex: 1;
  min-width: 0; /* Allow content to shrink */
}

/* Banner actions */
.c-banner__actions {
  flex-shrink: 0;
  display: flex;
  align-items: flex-start;
  gap: var(--ds-space-s);
  margin-top: -0.25rem; /* Align with icon */
}

/* Banner close button */
.c-banner__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border: none;
  border-radius: var(--ds-radius-s);
  background: transparent;
  color: currentColor;
  cursor: pointer;
  transition: background-color var(--ds-duration-fast) var(--ds-ease-out);
}

.c-banner__close:hover {
  background-color: rgba(0, 0, 0, 0.1);
}

.c-banner__close:focus-visible {
  outline: var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);
  outline-offset: var(--ds-focus-ring-offset);
}

.c-banner__close-icon {
  width: 1rem;
  height: 1rem;
  stroke: currentColor;
  fill: none;
}

/* Variant: Info (default) */
.c-banner--info {
  --c-banner-background-color: var(--ds-color-status-info-weak);
  --c-banner-border-color: var(--ds-color-border-info);
  --c-banner-icon-color: var(--ds-color-status-info);
}

/* Variant: Success */
.c-banner--success {
  --c-banner-background-color: var(--ds-color-status-success-weak);
  --c-banner-border-color: var(--ds-color-border-success);
  --c-banner-icon-color: var(--ds-color-status-success);
}

/* Variant: Warning */
.c-banner--warning {
  --c-banner-background-color: var(--ds-color-status-warning-weak);
  --c-banner-border-color: var(--ds-color-border-warning);
  --c-banner-icon-color: var(--ds-color-status-warning);
}

/* Variant: Danger */
.c-banner--danger {
  --c-banner-background-color: var(--ds-color-status-danger-weak);
  --c-banner-border-color: var(--ds-color-border-danger);
  --c-banner-icon-color: var(--ds-color-status-danger);
}

/* Size variants */
.c-banner--size-s {
  --c-banner-padding: var(--ds-space-s) var(--ds-space-m);
  --c-banner-gap: var(--ds-space-s);
  --c-banner-font-size: var(--ds-font-size-s);
  --c-banner-icon-size: 1rem;
}

.c-banner--size-m {
  --c-banner-padding: var(--ds-space-m);
  --c-banner-gap: var(--ds-space-m);
  --c-banner-font-size: var(--ds-font-size-m);
  --c-banner-icon-size: 1.25rem;
}

.c-banner--size-l {
  --c-banner-padding: var(--ds-space-l);
  --c-banner-gap: var(--ds-space-l);
  --c-banner-font-size: var(--ds-font-size-l);
  --c-banner-icon-size: 1.5rem;
}

/* Dismissible banner - inherits base styles */

/* Banner with actions */
.c-banner--with-actions .c-banner__content {
  margin-bottom: var(--ds-space-s);
}

/* Banner links */
.c-banner a {
  color: var(--c-banner-link-color, var(--ds-color-text-link));
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
  transition: color var(--ds-duration-fast) var(--ds-ease-out);
}

.c-banner a:hover {
  color: var(--ds-color-accent);
  text-decoration-thickness: 2px;
}

.c-banner a:focus-visible {
  outline: var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);
  outline-offset: var(--ds-focus-ring-offset);
  border-radius: var(--ds-radius-xs);
}

/* Banner in cards */
.c-card .c-banner {
  /* margin: calc(var(--ds-space-m) * -1); */
  margin-bottom: var(--ds-space-m);
  border-radius: 0;
  border-left: none;
  border-right: none;
  border-top: none;
}

.c-card .c-banner:last-child {
  margin-bottom: calc(var(--ds-space-m) * -1);
  border-bottom: none;
}

/* Sticky banner */
.c-banner--sticky {
  position: sticky;
  top: 0;
  z-index: var(--ds-z-sticky);
  border-radius: 0;
  box-shadow: var(--ds-shadow-header);
}

/* Full-width banner */
.c-banner--full-width {
  border-radius: 0;
  border-left: none;
  border-right: none;
}

/* Banner animations */
.c-banner--animate-in {
  animation: c-banner-slide-down var(--ds-duration-normal) var(--ds-ease-out);
}

.c-banner--animate-out {
  animation: c-banner-slide-up var(--ds-duration-normal) var(--ds-ease-in) forwards;
}

@keyframes c-banner-slide-down {
  from {
    opacity: 0;
    transform: translateY(-100%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes c-banner-slide-up {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-100%);
  }
}

/* High contrast mode */
@media (prefers-contrast: high) {
  .c-banner {
    border-width: 2px;
    border-style: solid;
  }
  
  .c-banner__close {
    border: 1px solid currentColor;
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .c-banner--animate-in,
  .c-banner--animate-out {
    animation: none;
  }
  
  .c-banner__close {
    transition: none;
  }
}

/* Print styles */
@media print {
  .c-banner {
    background-color: transparent !important;
    color: black !important;
    border: 1px solid black !important;
  }
  
  .c-banner__close {
    display: none;
  }
}

/* Banner icon - direct SVG child (for inline SVGs without .c-banner__icon class) */
.c-banner > svg {
  flex-shrink: 0;
  width: var(--c-banner-icon-size, 1.25rem);
  height: var(--c-banner-icon-size, 1.25rem);
  margin-top: 0.125rem; /* Align with first line of text */
  stroke: var(--c-banner-icon-color, currentColor);
  fill: none;
}

/* Mobile responsive */
@media (max-width: 768px) {
  .c-banner {
    --c-banner-padding: var(--ds-space-s) var(--ds-space-m);
    --c-banner-gap: var(--ds-space-s);
    --c-banner-font-size: var(--ds-font-size-s);
    flex-wrap: wrap;
  }

  .c-banner__actions {
    flex-wrap: wrap;
    align-items: center;
    width: 100%;
    margin-top: var(--ds-space-s);
    gap: var(--ds-space-xs);
  }

  .c-banner--with-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .c-banner--with-actions .c-banner__content {
    margin-bottom: 0;
  }
}

/* Extra small screens - stack actions vertically */
@media (max-width: 480px) {
  .c-banner__actions {
    flex-direction: column;
    align-items: stretch;
  }

  .c-banner__actions > .c-select,
  .c-banner__actions > .c-button {
    width: 100%;
  }

  .c-banner__actions > .c-select .c-select__field {
    width: 100%;
  }
}
