@layer components {
  /*
   * Card Grid Layout
   * Replaces old .row + .col-* system with flexbox
   * Maintains exact same spacing as original grid
   */
  
  .card-grid {
    display: flex;
    flex-wrap: wrap;
    margin-left: -12px;
    margin-right: -12px;
  
    @media (max-width: 1439.98px) {
      margin-left: -10px;
      margin-right: -10px;
    }
  
    @media (max-width: 991.98px) {
      margin-left: -8px;
      margin-right: -8px;
    }
  }
  
  .card-grid-item {
    flex: 0 0 auto;
    padding-left: 12px;
    padding-right: 12px;
  
    /* Default: 4 columns (like col-lg-3) */
    width: 25%;
  
    @media (max-width: 1439.98px) {
      padding-left: 10px;
      padding-right: 10px;
    }
  
    /* 3 columns on medium screens (like col-md-4) */
    @media (max-width: 991.98px) {
      padding-left: 8px;
      padding-right: 8px;
      width: 33.333333%;
    }
  
    /* 2 columns on small screens (like col-sm-6) */
    @media (max-width: 639.98px) {
      width: 50%;
    }
  
    /* 1 column on extra small screens (like col-xs-12) */
    @media (max-width: 399.98px) {
      width: 100%;
    }
  }
  
  /*
   * Card
   */
  
  .card {
    background-color: var(--color-white);
    border: 1px solid var(--color-grey-200);
    border-bottom: none;
    border-top: 1px solid var(--color-primary);
    display: flex;
    flex-direction: column;
    line-height: 1.25;
    margin-bottom: 1.5rem;
    min-height: 260px;
    position: relative;
    transition: 0.2s ease;
  
    &:after {
      background-image: repeating-linear-gradient(to bottom, var(--color-grey-200), var(--color-grey-200) 0.0625rem, transparent 0.0625rem, transparent 0.25rem);
      background-repeat: repeat-x;
      background-position: bottom;
      background-size: 0.0625rem 0.8125rem;
      background-color: var(--color-white);
      content: '';
      display: block;
      height: 0.8125rem;
    }
  
    @media (max-width: 1439.98px) {
      margin-bottom: 1.25rem;
    }
  
    @media (max-width: 991.98px) {
      margin-bottom: 1rem;
      min-height: 220px;
    }
  
    @media (max-width: 639.98px) {
      font-size: 0.938rem;
    }
  
    @media (max-width: 399.98px) {
      min-height: auto;
    }
  
    .card-overlay {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
    }
  
    a {
      pointer-events: all;
    }
  
    a:hover {
      text-decoration: none;
    }
  
    .card-inner {
      display: flex;
      flex-direction: column;
      flex-grow: 1;
      padding: 1.25rem;
      position: relative;
      pointer-events: none;
      z-index: 1;
  
      @media (max-width: 991.98px) {
        padding: 1rem;
      }
  
      @media (max-width: 639.98px) {
        padding: 0.75rem;
      }
    }
  
    .card-title {
      color: var(--color-primary);
      margin-bottom: 0.5rem;
    }
  
    .card-subtitle {
      display: inline-block;
    }
  
    .card-user {
      align-items: flex-start;
      display: flex;
      margin-top: 0.75rem;
  
      .card-user-avatar {
        height: 2.25rem;
        width: 2.25rem;
  
        img {
          width: 100%;
          height: auto;
        }
      }
  
      .card-user-details {
        font-size: 0.875rem;
        line-height: 1.33;
        margin-left: 0.5rem;
      }
  
      .card-journal-date {
        display: block;
        color: var(--color-grey-600);
      }
    }
  
    .card-footer {
      align-items: center;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      margin-top: auto;
      padding-top: 1.25rem;
  
      .badge {
        margin-right: 0.5rem;
      }
    }
  
    .card-items {
      color: var(--color-grey-600);
      font-size: 0.938rem;
      line-height: 1;
    }
  
    .card-set-completed-icon {
      color: var(--color-green);
      float: right;
      margin: 0.25rem 0 0.25rem 0.25rem;
      transition: 0.2s ease;
    }
  
    .card-set-ready-icon {
      color: var(--color-primary);
      opacity: 0.75;
      float: right;
      margin: 0.25rem 0 0.25rem 0.25rem;
      transition: 0.2s ease;
    }
  
    .card-review-badge {
      align-items: center;
      background-color: var(--color-primary);
      border-radius: 50%;
      color: var(--color-white);
      display: flex;
      float: right;
      font-size: 0.75rem;
      font-weight: 500;
      height: 3.25rem;
      justify-content: center;
      line-height: 1;
      margin: -0.375rem -0.375rem 0 0;
      text-align: center;
      width: 3.25rem;
  
      @media (max-width: 399.98px) {
        margin-top: 0.5rem;
      }
    }
  
    &:hover {
      transform: scale(1.025);
  
      .card-title {
        text-decoration: underline;
      }
    }
  }
  
  .card-set-premium {
    a {
      pointer-events: auto;
    }
  
    .card-title {
      color: var(--color-grey-900);
    }
  
    .badge-premium-circle {
      float: right;
      margin: 0 0 0.25rem 0.25rem;
      transition: 0.2s ease;
    }
  
    &:hover {
      transform: none;
  
      .card-title {
        text-decoration: none;
      }
    }
  }
}
