/* Tabs Component
   ========================================================================== */

.tabs {
  display: flex;
  justify-content: center;
  align-items: center;
  column-gap: var(--column-gap, var(--inline-space));
  border-block-end: var(--border);

  .tab {
    display: flex;
    border: var(--border);
    border-radius: var(--border-radius) var(--border-radius) 0 0;
    block-size: 3rem;
    justify-content: center;
    align-items: center;
    padding-inline: 1.5ch;
    margin-block-end: calc(var(--border-size) * -1);
    background-color: var(--color-gray-light);
    color: var(--color-ink-dark);

    &:hover {
      color: var(--color-ink-dark);
    }
  }

  .tab--active {
    border-block-end-color: var(--color-bg);
    background-color: var(--color-bg);
  }
}

/* Turbo Frame Loading Indicator
   ========================================================================== */
turbo-frame#tab_content {
  position: relative;
  min-block-size: 50vh; /* Maintain minimum height to prevent footer jumping */
}

/* Show spinner when turbo frame is loading */
turbo-frame#tab_content[aria-busy="true"]::after {
  --mask: no-repeat radial-gradient(#000 68%, #0000 71%);
  --dot-size: 1.75em;

  content: "";
  position: absolute;
  inset: 50% 50%;
  transform: translate(-50%, -50%);
  inline-size: var(--dot-size);
  aspect-ratio: 8/5;
  background: currentColor;
  -webkit-mask: var(--mask), var(--mask), var(--mask);
  -webkit-mask-size: 28% 45%;
  animation: submitting 1.3s infinite linear;
  z-index: 10;
}

/* Optional: Reduce opacity of content while loading */
turbo-frame#tab_content[aria-busy="true"] > * {
  opacity: 0.3;
  transition: opacity 200ms;
}

.nav-item a {
  color: var(--color-red);
}

.nav-item a:hover {
  color: var(--color-red-dark);
}
