/*
 * Header Components
 * Site header and admin header navigation
 */

@layer components {
  /* Site header — sticky with glass effect on scroll */
  .site-header {
    position: sticky;
    inset-block-start: 0;
    z-index: var(--z-sticky);
    padding-block-start: env(safe-area-inset-top);
    transition: background-color 200ms, backdrop-filter 200ms, border-color 200ms;
  }

  .site-header--transparent {
    background-color: var(--color-white);
    border-block-end: 1px solid transparent;
  }

  .site-header--glass {
    background-color: oklch(var(--lch-white) / 50%);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-block-end: 1px solid transparent;
  }

  .site-header__inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-inline-size: var(--content-width);
    margin-inline: auto;
    padding: var(--block-space-3quarter) max(var(--main-padding), env(safe-area-inset-right)) var(--block-space-3quarter) max(var(--main-padding), env(safe-area-inset-left));
  }

  /* Shared logo mask */
  .site-header__logo-img {
    display: inline-block;
    aspect-ratio: 1003 / 663;
    background-color: currentColor;
    mask-image: url("/assets/logo-belajargpt-15954e9e.svg");
    mask-position: center;
    mask-repeat: no-repeat;
    mask-size: contain;
  }

  /* Logo */
  .site-header__logo {
    display: flex;
    align-items: center;
    color: var(--color-green-darker);

    & .site-header__logo-img {
      block-size: var(--logo-height);

      @media (min-width: 1280px) {
        block-size: var(--logo-height-lg);
      }
    }
  }

  /* Logo hidden on mobile for member header */
  .site-header__logo--member {
    @media (max-width: 799px) {
      display: none;
    }
  }

  /* Logo standalone (used outside header context, e.g. auth pages) */
  .logo-standalone {
    display: inline-flex;
    color: var(--color-green-darker);

    & .site-header__logo-img {
      block-size: calc(var(--logo-height-lg) * 1.2);
    }
  }

  /* Icon navigation link */
  .site-header__icon-link {
    display: flex;
    align-items: center;
    color: var(--color-gray-darker);
    padding: var(--block-space-half);

    @media (any-hover: hover) {
      &:hover {
        color: var(--color-gray-dark);
      }
    }
  }

  /* Active state — triggers icon-swap fill */
  .site-header__icon-link--active {
    color: var(--color-gray-darker);
  }

  /* Label next to icon (e.g. "Login" text) */
  .site-header__label {
    margin-inline-start: var(--block-space-quarter);
    font-size: var(--text-small);

    @media (max-width: 799px) {
      display: none;
    }
  }

  /* Dynamic date icon — blank calendar with today's date overlaid */
  .site-header__date-icon {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    inline-size: var(--icon-lg);
    block-size: var(--icon-lg);
    pointer-events: none;
    user-select: none;

    &::before {
      content: "";
      position: absolute;
      inset: 0;
      background-color: currentColor;
      mask-image: url("/assets/icons/calendar-blank-6c0c9f29.svg");
      mask-position: center;
      mask-repeat: no-repeat;
      mask-size: contain;
    }

    & .site-header__date-number {
      position: absolute;
      inset-block-start: 60%;
      inset-inline-start: 50%;
      translate: -50% -50%;
      font-size: 0.625rem;
      font-weight: 700;
      line-height: 1;
    }
  }

  /* Date icon fill swap when active */
  .site-header__icon-link--active .site-header__date-icon::before {
    mask-image: url("/assets/icons/calendar-blank-fill-9e8fce09.svg");
  }

  .site-header__icon-link--active .site-header__date-number {
    color: var(--color-white);
  }

  /* Initials avatar */
  .site-header__avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    inline-size: 2rem;
    block-size: 2rem;
    border-radius: 50%;
    background-color: var(--color-gray-light);
    border: 1px solid var(--color-gray);
    font-size: var(--text-x-small);
    color: var(--color-gray-darker);
    cursor: pointer;
    user-select: none;
  }

  .site-header__avatar--active {
    background-color: var(--color-gray-darker);
    border-color: var(--color-gray-darker);
    color: var(--color-white);
  }

  .site-header__link {
    color: var(--color-gray-darker);
    font-size: var(--text-normal);

    @media (any-hover: hover) {
      &:hover {
        color: var(--color-gray-dark);
      }
    }
  }

  /* Dark mode glass effect */
  html[data-theme="dark"] .site-header--glass {
    background-color: oklch(var(--lch-black) / 80%);
  }

  @media (prefers-color-scheme: dark) {
    html:not([data-theme="light"]) .site-header--glass {
      background-color: oklch(var(--lch-black) / 80%);
    }
  }

  /* Admin header */
  .admin-header {
    background-color: var(--color-gray-darker);
    color: var(--color-white);
    padding: var(--block-space-3quarter) 0;
  }

  .admin-header__inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-inline-size: var(--content-width);
    margin-inline: auto;
    padding-inline: var(--main-padding);
  }

  .admin-header__title {
    font-size: var(--text-x-large);
  }

  .admin-header__link {
    color: var(--color-white);
    font-size: var(--text-normal);
    transition: opacity 150ms ease;

    @media (any-hover: hover) {
      &:hover {
        opacity: 0.8;
      }
    }
  }

  .admin-header__nav {
    display: flex;
    align-items: center;
    gap: var(--block-space);
  }
}
