/* buttons */

.btn {
    opacity: 1;
}

.btn:focus,
.btn:hover {
    box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), .15) !important;
    text-decoration: none;
}

.btn-primary {
    --bs-btn-bg: var(--serve-dark-grey);
    --bs-btn-border-color: var(--serve-dark-grey);
    --bs-btn-hover-bg: var(--serve-dark-grey);
    --bs-btn-hover-border-color: var(--serve-dark-grey);
    --bs-btn-focus-shadow-rgb: 49, 132, 253;
    --bs-btn-active-bg: var(--serve-dark-grey);
    --bs-btn-active-border-color: var(--serve-dark-grey);
    --bs-btn-disabled-bg: var(--serve-dark-grey);
    --bs-btn-disabled-border-color: var(--serve-dark-grey);
}

.btn-profile {
    --bs-btn-bg: var(--serve-lime);
    --bs-btn-border-color: var(--serve-lime);
    --bs-btn-hover-bg: var(--serve-lime);
    --bs-btn-hover-border-color: var(--serve-lime);
    --bs-btn-focus-shadow-rgb: 49, 132, 253;
    --bs-btn-active-bg: var(--serve-lime);
    --bs-btn-active-border-color: var(--serve-lime);
    --bs-btn-disabled-bg: var(--serve-lime);
    --bs-btn-disabled-border-color: var(--serve-lime);
}

.btn-outline-serve {
    --bs-btn-color: var(--serve-teal);
    --bs-btn-border-color: var(--serve-teal);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--serve-teal);
    --bs-btn-hover-border-color: var(--serve-teal);
    --bs-btn-focus-shadow-rgb: 25,135,84;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--serve-teal);
    --bs-btn-active-border-color: var(--serve-teal);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: var(--serve-teal);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--serve-teal);
    --bs-gradient: none;
}

.btn-outline-serve-grape {
    --bs-btn-color: var(--serve-grape);
    --bs-btn-border-color: var(--serve-grape-025);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--serve-grape-075);
    --bs-btn-hover-border-color: var(--serve-grape-075);
    --bs-btn-focus-shadow-rgb: 25,135,84;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--serve-grape-075);
    --bs-btn-active-border-color: var(--serve-grape-075);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: var(--serve-grape-075);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--serve-grape-075);
    --bs-gradient: none;
}

.btn-outline-dark.btn-outline-cancel:hover {
    background-color: #ffffff00;
    box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), .15) !important;
    color: #222529;
    outline-offset: -1px;
    outline:2px solid #282a2e;
}

.btn-primary:hover {
    outline-offset: -1px;
    outline:2px solid var(--serve-dark-grey);
}

.btn-danger:hover {
    outline-offset: -1px;
    outline:2px solid #bb2d3b;
}

.aff-remove-btn {
    --bs-btn-color: #b02a37;
    --bs-btn-border-color: #b02a37;
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #b02a37;
    --bs-btn-hover-border-color: #b02a37;
    --bs-btn-focus-shadow-rgb: 176, 42, 55;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #842029;
    --bs-btn-active-border-color: #842029;
    --bs-btn-disabled-color: #842029;
    --bs-btn-disabled-border-color: #842029;
}

.btn-profile:hover {
    outline-offset: -1px;
    outline:2px solid var(--serve-lime);
}

/* serve button for scrolling to top */
.btn-top {
    position: fixed;
    bottom: 20px;
    right: 20px;
    display: none;
    font-size: medium;
    opacity: 0.5;
}

.serve-admin-dropdown-trigger {
    padding-bottom: 10px;
}

/* forms */

.form-control {
    border-color: var(--scaleout-grey-6);
}

.form-control:focus {
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important;
    border-color: var(--scaleout-grey-6);
}

.form-check-input:focus {
    border-color: var(--scaleout-grey-6);
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important;
}

.form-check-input:checked {
    background-color: var(--scaleout-green);
    border-color: var(--scaleout-green);
}

.form-control-with-spinner {
    width: -webkit-calc(100% - 50px);
    width:    -moz-calc(100% - 50px);
    width:         calc(100% - 50px);
}

.client-validation-feedback {
    display: block;
    width: 100%;
    margin-top: 0.25rem;
    font-size: 80%;
}

.client-validation-valid {
    color: rgb(25, 135, 84);
}

.client-validation-invalid {
    color: var(--bs-danger);
}

/* links */

a {
    text-decoration: none!important;
    display: inline-block!important;
    color: var(--bs-link-color);
}

a:hover {
    color: var(--bs-link-color);
}

a.serve-teal {
    color: var(--serve-teal)!important;
    color: var(--bs-link-color);
}

a::after {
    content: ''!important;
    display: block!important;
    width: 0!important;
    height: 1px!important;
    background: #000!important;
    transition: width .4s!important;
}

a:hover::after, a:focus::after, a.active::after {
    width: 100%!important;
    color: var(--bs-link-color)!important;
}

a.default::after{
    content:none!important;
}

a.default:hover::after, a.default:focus::after, a.default.active::after {
    width: 100%!important;
    color: var(--bs-link-color);
}

a.btn::after{
    content:none!important;
}

a.btn:hover::after, a.btn:focus::after, a.btn.active::after {
    width: 100%!important;
}

.navbar-nav {
    --bs-nav-link-color: var(--serve-dark-grey)!important;
}

/* text */

p a {
    color: var(--serve-teal)!important;
}

p a:hover,
p a:focus,
p a:active {
    color: var(--serve-teal)!important;
}


p,
h1,
h2,
h3,
h4,
h5,
h6 {
    opacity: .8;
}



/* lists */

.list-group-item {
    --bs-list-group-active-bg: var(--serve-dark-grey);
    --bs-list-group-active-border-color: var(--serve-dark-grey);
}

/* main navigation */

a.navbar-brand::after,
a.tag::after {
    display:none!important;
}

.nav .nav-item .nav-link {
    color: var(--serve-teal);
    /* font-weight: 500!important; */
    font-size: 1.05rem;
}

.nav .nav-item .nav-link:hover,
.nav .nav-item .nav-link:focus,
.nav .nav-item .nav-link.active {
    color: var(--serve-teal);
}

/* about pages */

a.nav-link.serve-teal {
    color: var(--serve-teal)!important;
    color: var(--bs-link-color);
}

a.nav-link.serve-teal.active {
    font-weight: bold;
}

.img-crop {
  height: 100px;
  overflow: hidden;
}

.img-crop img {
  display: block;
}

/* app cards styling */

.icon-external {
    padding-left: 0.5rem!important;
}

a.icon-external:hover::after, a:focus::after, a.active::after {
    width: 0!important;
}

.description-more {
    display: none;
}

.description-toggle {
    display: inline-block !important;
    margin-left: 0.5rem;
    background-color: var(--serve-teal-075) !important;
    border-color: var(--serve-teal-075) !important;
    color: var(--serve-teal) !important;
    font-size: 0.75rem !important;
    font-weight: 600;
    line-height: 1.1;
    cursor: pointer !important;
    vertical-align: text-bottom;
    text-decoration: none !important;
    box-shadow: none !important;
    transition: background-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.description-toggle:hover {
    background-color: var(--serve-teal-050) !important;
    color: var(--serve-teal) !important;
    transform: translateY(-1px);
    text-decoration: none !important;
}

.description-toggle:hover::after,
.description-toggle:focus::after,
.description-toggle.active::after {
    width: 0 !important;
}

.description-toggle:focus-visible {
    outline: 2px solid var(--serve-teal);
    outline-offset: 2px;
}

.app-card-orcid-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none !important;
    line-height: 1;
}

a.app-card-orcid-link:hover::after,
a.app-card-orcid-link:focus::after,
a.app-card-orcid-link.active::after {
    width: 0;
}

.app-card-orcid-link:hover,
.app-card-orcid-link:focus,
.app-card-orcid-link:focus-visible {
    text-decoration: none !important;
}

.app-card-orcid-link:hover img,
.app-card-orcid-link:focus img,
.app-card-orcid-link:focus-visible img {
    text-decoration: none !important;
}

.app-card-orcid-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #ffffff 0%, var(--serve-lime-025) 100%);
    border: 1px solid rgba(166, 206, 57, 0.55);
    box-shadow: 0 0.2rem 0.55rem rgba(63, 63, 63, 0.08);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.app-card-orcid-badge-sm {
    width: 1.6rem;
    height: 1.6rem;
}

.app-card-orcid-link:hover .app-card-orcid-badge,
.app-card-orcid-link:focus-visible .app-card-orcid-badge {
    transform: translateY(-1px);
    box-shadow: 0 0.5rem 1rem rgba(63, 63, 63, 0.12);
}

.app-card-orcid-icon {
    width: 1rem;
    height: 1rem;
    display: block;
}

.app-details-orcid-link {
    display: inline-flex !important;
    align-items: flex-start;
    gap: 0.35rem;
    line-height: 1.625;
    text-decoration: none !important;
}

.app-details-orcid-link::after,
.app-details-orcid-link:hover::after,
.app-details-orcid-link:focus::after,
.app-details-orcid-link.active::after {
    content: none !important;
}

.app-details-orcid-icon {
    width: 1rem;
    height: 1rem;
    display: block;
    flex-shrink: 0;
    margin-top: 0.3rem;
}

.orcid-id-link {
    color: var(--serve-lime) !important;
    text-decoration: none !important;
    font-size: 0.875rem;
}

.orcid-id-link:hover,
.orcid-id-link:focus,
.orcid-id-link:focus-visible {
    color: var(--serve-lime) !important;
    text-decoration: none !important;
}

/* collections */

a.collection-logo:hover::after, a:focus::after, a.active::after {
    width: 0;
}

.invalid .bi-check {
    display: none;
}
.valid .bi-x {
    display: none;
}

.bi-check {
    -webkit-text-stroke: 1px;
}

.bi-x {
    -webkit-text-stroke: 1px;
}

.alert-password {
    --bs-alert-color: #664d03!important;
    --bs-alert-bg: #a8a49c1c!important;
    /* --bs-alert-bg: #faf0dc!important;
    --bs-alert-border-color: #faf0dc!important; */
    --bs-alert-border-color: #a8a49c1c!important;
}

.alert-password-success {
    --bs-alert-color: #664d03!important;
    --bs-alert-bg: #d1e7dd5e!important;
    /* --bs-alert-bg: #d1e7dd!important;
    --bs-alert-border-color: #d1e7dd!important; */
    --bs-alert-border-color: #d1e7dd5e!important;
}

.cards-wrapper {
    display: flex;
    justify-content: center;
  }
  /* .card {
    margin: 0 0.5em;
    box-shadow: 2px 6px 8px 0 rgba(22, 22, 26, 0.18);
    border: none;
    border-radius: 0;
  } */
  .carousel-inner {
    padding: 1em;
  }
  .carousel-control-prev,
  .carousel-control-next {
    background-color: #e1e1e1;
    width: 5vh;
    height: 5vh;
    border-radius: 50%;
    top: 50%;
    transform: translateY(-50%);
  }

  .carousel-inner > .carousel-item {
    -webkit-transition: 0.6s ease-in-out left;
    -moz-transition: 0.6s ease-in-out left;
    -o-transition: 0.6s ease-in-out left;
    transition: 0.6s ease-in-out left;
}

.feather {
    width: 16px;
    height: 16px;
    stroke: currentColor;
    stroke-width: 2.3;
    stroke-linecap: round;
    stroke-linejoin: round;
    fill: none;
  }

  .feather.size-16{
    width: 15px;
    height: 15px;
    }

.text-bg-serve {
    background: #e5e9ed00 !important;
    outline: #696b72 solid 1.5px;
}

.text-bg-serve:hover {
    outline: var(--serve-teal) solid 1.5px;
}

.tag-filter {
    cursor: pointer !important;
    display: inline-flex;
    vertical-align: middle;
}
.ui.table {
  width: 100%;
  background: #fff;
  margin: 1em 0;
  border: 1px solid rgba(34, 36, 38, 0.15);
  border-right-width: 1px!important;
  box-shadow: none;
  border-radius: 0.28571429rem;
  text-align: left;
  vertical-align: middle;
  color: rgba(0, 0, 0, 0.87);
  border-collapse: separate;
  border-spacing: 0;
}

.ui.table>:not(caption)>*>* {
    padding: .5rem .5rem;
    background-color: var(--bs-table-bg);
    border-bottom-width: 1px;
    border-right-width: 1px;
    box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);
    font-size: 0.9rem;
}


.alert-app-table {
    padding: 0.2rem 0.4rem;
    color: rgb(255, 255, 255);
    font-size: 0.8rem;
}

.alert.bg-warning.alert-app-table {
    color: #000000!important;
}

.breadcrumb-divider-serve {
   --bs-breadcrumb-divider: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%236c757d'/%3E%3C/svg%3E")!important;
}
.ui.table > tbody > tr:nth-child(even) {
  background-color: rgba(244, 244, 245, 0.709);
}

.toggle-tags {
    color: #fff !important;
    background-color: rgb(119 87 126) !important;
    font-size: 0.6rem !important;
}

.accordion {
	--bs-accordion-btn-color: #515050;;
	--bs-accordion-btn-bg: #eeeeee;
	--bs-accordion-active-color: black;
	--bs-accordion-active-bg: #eeeeee;
}

.accordion-button:not(.collapsed)::after,
.accordion-button::after {
  background-image: unset !important;
}

.duration-300 {
    transition-duration: .3s;
}
.transition-all {
    transition-duration: .15s;
    transition-property: all;
    transition-timing-function:
cubic-bezier(.4, 0, .2, 1);
}

.pointer {
    cursor: pointer;
}

.link {
    text-decoration: none!important;
    display: inline-block!important;
    color: var(--bs-link-color);
}

.link:hover {
    color: var(--bs-link-color);
}
.link::after {
    content: ''!important;
    display: block!important;
    width: 0!important;
    height: 1px!important;
    background: #000!important;
    transition: width .4s!important;
}

.link:hover::after, .link:focus::after, .link.active::after {
    width: 100%!important;
    color: var(--bs-link-color)!important;
}

.link.default::after{
    content:none!important;
}

.link.default:hover::after, .link.default:focus::after, .link.default.active::after {
    width: 100%!important;
    color: var(--bs-link-color);
}

/* app deployment feedback */

.deployment-progress-shell {
    position: relative;
}

.deployment-progress-shell::before {
    content: "";
    position: absolute;
    inset: 2rem 1rem auto;
    height: 18rem;
    filter: blur(18px);
    pointer-events: none;
    z-index: 0;
}

.deployment-progress-card {
    position: relative;
    z-index: 1;
    border-radius: 1.4rem;
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(10px);
    box-shadow: 0 1.5rem 4rem rgba(16, 24, 40, 0.08);
}

.deployment-progress-pill {
    border-radius: 999px;
    padding: 0.55rem 0.8rem;
    font-size: 0.8rem;
    letter-spacing: 0.01em;
}

.deployment-progress-title {
    line-height: 1.05;
    letter-spacing: -0.03em;
}

.deployment-progress-message {
    font-size: 1.08rem;
    max-width: 42rem;
}

.deployment-progress-track {
    height: 0.9rem;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.08);
    overflow: hidden;
}

.deployment-progress-bar {
    width: 0%;
    border-radius: 999px;
    background-image: linear-gradient(90deg, #2563eb 0%, #3b82f6 55%, #60a5fa 100%);
}

.deployment-progress-bar.bg-success {
    background-image: linear-gradient(90deg, #15803d 0%, #22c55e 60%, #86efac 100%);
}

.deployment-progress-bar.bg-danger {
    background-image: linear-gradient(90deg, #b91c1c 0%, #ef4444 60%, #fca5a5 100%);
}

.deployment-progress-step-list {
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 1rem;
    background:
        linear-gradient(180deg, rgba(248, 250, 252, 0.96) 0%, rgba(255, 255, 255, 1) 100%),
        linear-gradient(135deg, rgba(37, 99, 235, 0.03), rgba(34, 197, 94, 0.02));
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.step-row {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1.1rem 1.25rem;
    border-bottom: 1px solid rgba(15, 23, 42, 0.08);
    transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.step-row:last-child {
    border-bottom: 0;
}

.step-row.is-running {
    background: rgba(37, 99, 235, 0.05);
    box-shadow: inset 0 0 0 1px rgba(37, 99, 235, 0.06);
}

.step-row.is-retrying {
    background: rgba(245, 158, 11, 0.08);
    box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.09);
}

.step-row.is-warning {
    background: rgba(245, 158, 11, 0.08);
    box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.09);
}

.step-row.is-success {
    background: rgba(22, 163, 74, 0.06);
    box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.07);
}

.step-row.is-skipped {
    background: rgba(108, 117, 125, 0.06);
    box-shadow: inset 0 0 0 1px rgba(108, 117, 125, 0.07);
}

.step-row.is-failed {
    background: rgba(220, 53, 69, 0.06);
    box-shadow: inset 0 0 0 1px rgba(220, 53, 69, 0.08);
}

.step-icon-wrap {
    flex-shrink: 0;
    padding-top: 0.1rem;
}

.step-icon {
    width: 2.1rem;
    height: 2.1rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(15, 23, 42, 0.12);
    background: #fff;
    color: #6c757d;
    box-shadow: 0 0.25rem 0.8rem rgba(15, 23, 42, 0.07);
}

.step-icon-pending {
    background: #f8fafc;
    color: #6c757d;
}

.step-icon-running {
    border-color: rgba(37, 99, 235, 0.2);
    background: linear-gradient(180deg, rgba(239, 246, 255, 1) 0%, rgba(219, 234, 254, 0.92) 100%);
    color: #2563eb;
}

.step-icon-retrying {
    border-color: rgba(245, 158, 11, 0.22);
    background: linear-gradient(180deg, rgba(255, 251, 235, 1) 0%, rgba(254, 243, 199, 0.94) 100%);
    color: #d97706;
}

.step-icon-warning {
    border-color: rgba(245, 158, 11, 0.22);
    background: linear-gradient(180deg, rgba(255, 251, 235, 1) 0%, rgba(254, 243, 199, 0.94) 100%);
    color: #d97706;
}

.step-icon-success {
    border-color: rgba(22, 163, 74, 0.2);
    background: linear-gradient(180deg, rgba(240, 253, 244, 1) 0%, rgba(220, 252, 231, 0.96) 100%);
    color: #15803d;
}

.step-icon-skipped {
    border-color: rgba(100, 116, 139, 0.2);
    background: linear-gradient(180deg, rgba(248, 250, 252, 1) 0%, rgba(241, 245, 249, 0.96) 100%);
    color: #475569;
}

.step-icon-failed {
    border-color: rgba(220, 53, 69, 0.2);
    background: linear-gradient(180deg, rgba(254, 242, 242, 1) 0%, rgba(254, 226, 226, 0.96) 100%);
    color: #dc2626;
}

.step-symbol-image {
    width: 1.05rem;
    height: 1.05rem;
    display: inline-block;
}

.step-detail {
    margin-top: 0.6rem;
    color: #475569;
}

.step-detail-copy {
    margin: 0;
    line-height: 1.5;
}

.step-detail-stack {
    display: grid;
    gap: 0.55rem;
}

.step-detail-meta {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0;
}

.step-detail-code {
    display: inline-block;
    max-width: 100%;
    padding: 0.32rem 0.55rem;
    border-radius: 0.55rem;
    border: 1px solid rgba(15, 23, 42, 0.08);
    background: rgba(248, 250, 252, 0.95);
    color: #0f172a;
    font-size: 0.82rem;
    line-height: 1.45;
    word-break: break-word;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

.step-row.is-failed .step-detail-code {
    border-color: rgba(220, 53, 69, 0.12);
    background: rgba(255, 255, 255, 0.72);
}

.step-detail-note {
    margin: 0;
    color: #64748b;
    line-height: 1.45;
}

.step-spinner {
    width: 0.85rem;
    height: 0.85rem;
    border-radius: 999px;
    border: 2px solid currentColor;
    border-right-color: transparent;
    display: inline-block;
    animation: deployment-step-spin 0.8s linear infinite;
}

.deployment-graph-wrapper {
    min-height: 240px;
}

.deployment-graph-edges {
    pointer-events: none;
}

.tag-remove-button {
    font-size: 0.7em;
}

.app-table-head {
    background-color: #6c757d14;
}

.app-table-logo-wrap {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.app-table-logo {
    max-width: 25px;
    min-width: 20px;
}

.app-table-tag {
    margin-right: -0.2rem;
}

.app-template-status-icon {
    color: orange;
    display: none;
}

.app-template-limit-button {
    cursor: default;
}

@keyframes deployment-step-spin {
    to {
        transform: rotate(360deg);
    }
}

@media (max-width: 576px) {
    .deployment-progress-title {
        font-size: 1.85rem;
    }

    .step-row {
        gap: 0.85rem;
        padding: 1rem;
    }

    .step-icon {
        width: 1.9rem;
        height: 1.9rem;
    }
}
