src/templates/assets/stylesheets/main/components/_tag.scss
////
/// Copyright (c) 2016-2025 Martin Donath <martin.donath@squidfunk.com>
///
/// Permission is hereby granted, free of charge, to any person obtaining a
/// copy of this software and associated documentation files (the "Software"),
/// to deal in the Software without restriction, including without limitation
/// the rights to use, copy, modify, merge, publish, distribute, sublicense,
/// and/or sell copies of the Software, and to permit persons to whom the
/// Software is furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
/// DEALINGS
////

// ----------------------------------------------------------------------------
// Rules
// ----------------------------------------------------------------------------

// Tag variables
:root {
  --md-tag-icon: svg-load("material/pound.svg");
}

// ----------------------------------------------------------------------------

// Scoped in typesetted content to match specificity of regular content
.md-typeset {

  // Tag list (if not hidden)
  .md-tags:not([hidden]) {
    display: inline-flex;
    flex-wrap: wrap;
    gap: px2em(8px);
    margin-top: px2em(-2px);
    margin-bottom: px2em(12px);
  }

  // Tag
  .md-tag {
    display: inline-flex;
    gap: px2em(8px);
    align-items: center;
    padding: px2em(4px, 12.8px) px2em(10px, 12.8px);
    font-size: px2rem(12.8px); // Fallback
    font-size: min(px2em(12.8px), px2rem(12.8px));
    font-weight: 700;
    line-height: 1.6;
    letter-spacing: initial;
    background: var(--md-default-fg-color--lightest);
    border-radius: px2rem(48px);

    // Linked tag
    &[href] {
      color: inherit;
      outline: none;
      -webkit-tap-highlight-color: transparent;
      transition:
        color            125ms,
        background-color 125ms;

      // Linked tag on focus/hover
      &:is(:focus, :hover) {
        color: var(--md-accent-bg-color);
        background-color: var(--md-accent-fg-color);
      }
    }

    // Tag inside headline
    [id] > & {
      vertical-align: text-top;
    }
  }

  // Tag icon
  .md-tag-icon {

    // Tag icon content
    &::before {
      display: inline-block;
      width: 1.2em;
      height: 1.2em;
      vertical-align: text-bottom;
      content: "";
      background-color: var(--md-default-fg-color--lighter);
      mask-image: var(--md-tag-icon);
      mask-repeat: no-repeat;
      mask-position: center;
      mask-size: contain;
      transition: background-color 125ms;
    }

    // Linked tag on focus/hover
    &[href]:is(:focus, :hover)::before {
      background-color: var(--md-accent-bg-color);
    }
  }
}
