@layer components {
  /* A month of Calendar::Day records on the funnel's dark surface. Days are
     labels wrapping an sr-only radio; unavailable ones are plain spans. */
  .box-builder-calendar {
    display: flex;
    flex-direction: column;
    gap: calc(var(--spacing) * 4);
    padding: calc(var(--spacing) * 5);
    border-radius: 8px;
    background-color: var(--color-surface-dark-high);
    text-align: center;
  }

  .box-builder-calendar__grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    row-gap: calc(var(--spacing) * 2);
  }

  .box-builder-calendar__weekday {
    font-family: var(--typo-body-family);
    font-size: var(--typo-body-size);
    font-weight: var(--typo-body-emphasis-weight);
    line-height: var(--typo-body-lh);
  }

  .box-builder-calendar__day {
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--typo-body-family);
    font-size: var(--typo-body-size);
    font-weight: var(--typo-body-emphasis-weight);
    line-height: var(--typo-body-lh);
  }

  .box-builder-calendar__day:not([data-unavailable]) {
    cursor: pointer;
  }

  .box-builder-calendar__day[data-unavailable] {
    opacity: 0.5;
  }

  .box-builder-calendar__day time {
    display: flex;
    align-items: center;
    justify-content: center;
    inline-size: 38px;
    block-size: 38px;
    border-radius: 9999px;
  }

  .box-builder-calendar__day:not([data-unavailable]):hover time {
    background-color: var(--color-surface-dark);
  }

  .box-builder-calendar__day:has(input:checked) time,
  .box-builder-calendar__day:has(input:checked):hover time {
    background-color: var(--color-surface-light);
    color: var(--color-content-on-light);
  }

  .box-builder-calendar__day:has(input:focus-visible) time {
    outline: 2px solid var(--color-content-on-dark);
    outline-offset: 2px;
  }

  /* Today is underlined, the same marker the account calendar uses. */
  .box-builder-calendar__day time[data-today] {
    text-decoration: underline;
    text-underline-offset: 4px;
  }
}
