@layer components {
  .input {
    display: block;
    inline-size: 100%;
    padding: var(--block-space-sm) var(--inline-space);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background-color: var(--color-canvas);
    font-family: inherit;
    font-size: var(--text-base);
  }

  .input::placeholder { color: var(--color-ink-faint); }
  .input:focus {
    outline: none;
    border-color: var(--color-link);
    box-shadow: 0 0 0 3px oklch(from var(--color-blue) l c h / 0.15);
  }

  .input--code {
    font-family: var(--font-family-mono);
    font-size: var(--text-xl);
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.25em;
  }

  /* Select dropdown */
  .select {
    display: block;
    inline-size: 100%;
    padding: var(--block-space-sm) var(--inline-space);
    padding-inline-end: var(--inline-space-xl);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background-color: var(--color-canvas);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");
    background-position: right var(--inline-space-sm) center;
    background-repeat: no-repeat;
    background-size: 1.5em 1.5em;
    font-family: inherit;
    font-size: var(--text-base);
    appearance: none;
    cursor: pointer;
  }

  .select:focus {
    outline: none;
    border-color: var(--color-link);
    box-shadow: 0 0 0 3px oklch(from var(--color-blue) l c h / 0.15);
  }

  /* Checkbox and radio */
  .checkbox,
  .radio {
    display: inline-flex;
    align-items: center;
    gap: var(--inline-space-sm);
    cursor: pointer;
  }

  .checkbox input[type="checkbox"] {
    width: 1em;
    height: 1em;
    margin: 0;
    accent-color: var(--color-blue);
    border-radius: var(--radius-sm);
  }

  .radio input[type="radio"] {
    width: 1em;
    height: 1em;
    margin: 0;
    accent-color: var(--color-blue);
  }

  /* ======================
   * INPUT WITH HOTKEY
   * ======================
   * Input field with keyboard shortcut indicator.
   */
  .input-with-hotkey {
    position: relative;
    display: flex;
    align-items: center;
  }

  .input-with-hotkey__input {
    width: 100%;
    padding-inline-end: 2.5rem;
  }

  .input-with-hotkey__kbd {
    position: absolute;
    inset-inline-end: 0.5rem;
    font-family: var(--font-family);
    font-size: 0.75em;
    font-weight: 600;
    padding: 0.15em 0.5em;
    background-color: var(--color-grey-200);
    border-radius: var(--radius-sm);
    color: var(--color-ink-muted);
    pointer-events: none;
  }

  .input-with-hotkey__input:focus + .input-with-hotkey__kbd {
    display: none;
  }
}
