/* Border Width */
.border-none {
  border-width: 0;
}

.border-thin {
  border-width: 1px;
}

.border-medium {
  border-width: 2px;
}

.border-thick {
  border-width: 4px;
}

/* Border Style */
.border-solid {
  border-style: solid;
}

.border-dashed {
  border-style: dashed;
}

.border-dotted {
  border-style: dotted;
}

.border-double {
  border-style: double;
}

.border-groove {
  border-style: groove;
}

.border-ridge {
  border-style: ridge;
}

.border-inset {
  border-style: inset;
}

.border-outset {
  border-style: outset;
}

.border-none-style {
  border-style: none;
}

/* Border Color using Bulma Variables */
.has-border-primary {
  border-color: var(--primary);
}

.has-border-link {
  border-color: var(--link);
}

.has-border-info {
  border-color: var(--info);
}

.has-border-success {
  border-color: var(--success);
}

.has-border-warning {
  border-color: var(--warning);
}

.has-border-danger {
  border-color: var(--danger);
}

.has-border-light {
  border-color: var(--light);
}

.has-border-dark {
  border-color: var(--dark);
}

/* Border Radius */
.border-radius-none {
  border-radius: 0;
}

.border-radius-sm {
  border-radius: 4px;
}

.border-radius-md {
  border-radius: 8px;
}

.border-radius-lg {
  border-radius: 16px;
}

.border-radius-full {
  border-radius: 9999px;
}

/* Border on Specific Sides */
.border-top {
  border-top-width: 1px;
  border-style: solid;
}

.border-right {
  border-right-width: 1px;
  border-style: solid;
}

.border-bottom {
  border-bottom-width: 1px;
  border-style: solid;
}

.border-left {
  border-left-width: 1px;
  border-style: solid;
}

/* Border on Specific Sides with Color using Bulma Variables */
.border-top-primary {
  border-top-width: 1px;
  border-style: solid;
  border-top-color: var(--primary);
}

.border-right-primary {
  border-right-width: 1px;
  border-style: solid;
  border-right-color: var(--primary);
}

.border-bottom-primary {
  border-bottom-width: 1px;
  border-style: solid;
  border-bottom-color: var(--primary);
}

.border-left-primary {
  border-left-width: 1px;
  border-style: solid;
  border-left-color: var(--primary);
}

/* Border Transparency */
.border-opacity-0 {
  border-color: rgba(0, 0, 0, 0);
}

.border-opacity-25 {
  border-color: rgba(0, 0, 0, 0.25);
}

.border-opacity-50 {
  border-color: rgba(0, 0, 0, 0.5);
}

.border-opacity-75 {
  border-color: rgba(0, 0, 0, 0.75);
}

.border-opacity-100 {
  border-color: rgba(0, 0, 0, 1);
}

/* Responsive Border Utility Classes */
@media (min-width: 576px) {
  .sm-border-thin {
    border-width: 1px;
  }

  .sm-border-radius-lg {
    border-radius: 16px;
  }
}

@media (min-width: 768px) {
  .md-border-thin {
    border-width: 1px;
  }

  .md-border-radius-lg {
    border-radius: 16px;
  }
}

@media (min-width: 992px) {
  .lg-border-thin {
    border-width: 1px;
  }

  .lg-border-radius-lg {
    border-radius: 16px;
  }
}
