/* -- Sort Control (website · Search & Navigation) -------------------------
   Changes the ordering of a collection - a labelled select, a segmented choice, or a button that opens a menu of options. */

@layer components {
  /* every box in the block measures border-box - the same on any page */
  :where(.mk-sort-control, .mk-sort-control *, .mk-sort-control ::before, .mk-sort-control ::after) { box-sizing: border-box; }

  .mk-sort-control { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.875rem;
    & > label { color: var(--muted-foreground); white-space: nowrap; }
    & .select { width: auto; height: 2rem; font-size: 0.8125rem; }
  }
  .mk-sort-control[data-variant="segmented"] { padding: 0.1875rem; margin: 0; border: 0; border-radius: var(--radius-md); background: var(--muted); gap: 0;
    & legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    & label { position: relative; padding: 0.3125rem 0.75rem; border-radius: calc(var(--radius-md) - 2px); color: var(--muted-foreground); font-size: 0.8125rem; font-weight: 500; cursor: pointer; }
    & input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
    & label:has(:checked) { background: var(--background); color: var(--foreground); box-shadow: var(--shadow-xs); }
    & label:has(:focus-visible) { outline: 2px solid var(--ring); outline-offset: 1px; }
  }
  .mk-sort-control-menu {
    margin: 0;
    padding: 0.25rem;
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    background: var(--popover);
    color: var(--popover-foreground);
    box-shadow: var(--shadow-lg);
    min-width: 12rem;

    & label { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.5rem 0.625rem; border-radius: var(--radius-sm); font-size: 0.875rem; cursor: pointer; }
    & label:hover, & label:has(:focus-visible) { background: var(--accent); }
    & input { position: absolute; opacity: 0; }
    & label::after { content: ""; width: 0.375rem; height: 0.625rem; border-block-end: 2px solid currentColor; border-inline-end: 2px solid currentColor; rotate: 45deg; translate: 0 -0.125rem; opacity: 0; }
    & label:has(:checked)::after { opacity: 1; }
  }
  @supports (position-anchor: --a) {
    .mk-sort-control-menu { inset: auto; margin-block-start: 0.375rem; position-area: bottom span-left; position-try-fallbacks: flip-block; }
  }

  /* -- Accessibility ------------------------------------------- */
  @media (forced-colors: active) {
    .mk-sort-control[data-variant="segmented"] label:has(:checked) { outline: 2px solid Highlight; }
  }
}
