:root {
    --bo-primary: #1f3a5f;
    --bo-primary-dark: #13233a;
    --bo-primary-mid: #244a78;
    --bo-accent: #f5c451;
    --bo-accent-strong: #e0a819;
    --bo-light: #f9fafb;
    --bo-ink: #202124;
    --bo-muted: #687076;
    --bo-primary-soft: #e8eef7;
    --bo-accent-soft: rgba(245, 196, 81, .16);
    --bo-accent-ink: #241a03;
    --bo-accent-deep: #725204;
    --bo-amber: var(--bo-accent);
    --bo-amber-strong: var(--bo-accent-strong);
    --bo-blue: var(--bo-primary);
    --bo-blue-soft: var(--bo-primary-soft);
}

.bo-brand-logo {
    height: 2.75rem;
    object-fit: contain;
    width: auto;
}

.bo-brand-lockup {
    align-items: center;
    display: inline-flex;
    gap: .7rem;
    min-width: max-content;
}

.bo-brand-mark {
    align-items: center;
    background: linear-gradient(135deg, var(--bo-primary-dark), var(--bo-primary));
    border-radius: .9rem;
    box-shadow: 0 .55rem 1.25rem rgba(31, 58, 95, .18);
    display: inline-flex;
    height: 2.75rem;
    justify-content: center;
    padding: .42rem;
    width: 2.75rem;
}

.bo-brand-mark img {
    display: block;
    height: 100%;
    width: 100%;
}

.bo-brand-word {
    display: grid;
    line-height: 1;
}

.bo-brand-name {
    color: var(--bo-primary);
    font-size: 1.25rem;
    font-weight: 900;
    letter-spacing: -.03em;
}

.bo-brand-tagline {
    color: var(--bo-accent-deep);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .08em;
    margin-top: .25rem;
    text-transform: uppercase;
}

.bo-header-actions {
    background: var(--bo-accent-soft);
    border: 1px solid rgba(245, 196, 81, .34);
    border-radius: 999px;
    padding: .28rem;
}

.bo-header-link,
.bo-header-cta,
.bo-btn-accent,
.bo-header-icon {
    border: 0;
    border-radius: 999px;
    min-height: 2.65rem;
}

.bo-header-link {
    color: var(--bo-ink);
    font-weight: 700;
    padding-inline: 1rem;
}

.bo-header-cta,
.bo-btn-accent {
    background: linear-gradient(135deg, var(--bo-accent), var(--bo-accent-strong));
    box-shadow: 0 .6rem 1.2rem rgba(224, 168, 25, .24);
    color: var(--bo-accent-ink);
    font-weight: 800;
    padding-inline: 1.1rem;
}

.bo-header-cta:hover,
.bo-header-cta:focus,
.bo-btn-accent:hover,
.bo-btn-accent:focus {
    color: var(--bo-accent-ink);
    transform: translateY(-.05rem);
}

.bo-btn-primary {
    background: linear-gradient(135deg, var(--bo-primary), var(--bo-primary-mid));
    border: 0;
    box-shadow: 0 .7rem 1.4rem rgba(31, 58, 95, .2);
    color: var(--bo-light);
    font-weight: 800;
}

.bo-btn-primary:hover,
.bo-btn-primary:focus {
    background: linear-gradient(135deg, var(--bo-primary-dark), var(--bo-primary));
    color: var(--bo-light);
    transform: translateY(-.05rem);
}

.bo-btn-outline {
    border-color: rgba(31, 58, 95, .38);
    color: var(--bo-primary);
    font-weight: 700;
}

.bo-btn-outline:hover,
.bo-btn-outline:focus {
    background: var(--bo-primary);
    border-color: var(--bo-primary);
    color: var(--bo-light);
}

.bo-btn-outline-light {
    border-color: rgba(249, 250, 251, .7);
    color: var(--bo-light);
    font-weight: 700;
}

.bo-btn-outline-light:hover,
.bo-btn-outline-light:focus {
    background: var(--bo-light);
    color: var(--bo-primary);
}

.bo-btn-auth-secondary {
    background: rgba(249, 250, 251, .96);
    border: 1px solid rgba(249, 250, 251, .72);
    border-radius: 999px;
    color: var(--bo-primary-dark);
    font-weight: 800;
    padding-inline: 1.15rem;
}

.bo-btn-auth-secondary:hover,
.bo-btn-auth-secondary:focus {
    background: var(--bo-accent);
    border-color: var(--bo-accent);
    color: var(--bo-accent-ink);
}

.bo-mobile-menu {
    position: relative;
}

.bo-mobile-menu summary {
    list-style: none;
}

.bo-mobile-menu summary::-webkit-details-marker {
    display: none;
}

.bo-mobile-menu-panel {
    background: var(--fn-body-bg);
    border: 1px solid var(--fn-border-color);
    border-radius: 1rem;
    display: grid;
    gap: .25rem;
    min-width: 15rem;
    padding: .75rem;
    position: absolute;
    right: 0;
    top: calc(100% + .75rem);
    z-index: 1030;
}

.bo-mobile-menu-panel a,
.bo-mobile-theme-toggle {
    border: 0;
    border-radius: .75rem;
    color: var(--fn-body-color);
    font-weight: 600;
    padding: .75rem .85rem;
    text-align: left;
    text-decoration: none;
}

.bo-mobile-menu-panel a.active,
.bo-mobile-menu-panel a:hover,
.bo-mobile-theme-toggle:hover {
    background: var(--bo-primary-soft);
    color: var(--bo-primary);
}

.bo-theme-toggle .bo-theme-toggle-light,
.bo-mobile-theme-toggle .bo-theme-toggle-light,
[data-bs-theme="dark"] .bo-theme-toggle .bo-theme-toggle-dark,
[data-bs-theme="dark"] .bo-mobile-theme-toggle .bo-theme-toggle-dark {
    display: none;
}

[data-bs-theme="dark"] .bo-theme-toggle .bo-theme-toggle-light,
[data-bs-theme="dark"] .bo-mobile-theme-toggle .bo-theme-toggle-light {
    display: inline-block;
}

[data-bs-theme="dark"] .bo-header-link,
[data-bs-theme="dark"] .bo-header-icon {
    color: #eef2f7;
}

.bo-hero {
    background:
        linear-gradient(90deg, rgba(19, 35, 58, .94), rgba(31, 58, 95, .76)),
        var(--bo-hero-image);
    background-position: center;
    background-size: cover;
    border-radius: 0 0 2.5rem 2.5rem;
    color: #fff;
    overflow: hidden;
    position: relative;
}

.bo-hero::after {
    background: radial-gradient(circle at 80% 20%, rgba(245, 196, 81, .5), transparent 28rem);
    content: "";
    inset: 0;
    pointer-events: none;
    position: absolute;
}

.bo-hero > .container {
    position: relative;
    z-index: 1;
}

.bo-hero h1,
.bo-hero .h1,
.bo-hero .h2,
.bo-hero .h3,
.bo-detail-hero h1,
.bo-detail-hero .h1,
.bo-detail-hero .h2,
.bo-detail-hero .h3 {
    color: var(--bo-light) !important;
}

.bo-search-panel {
    backdrop-filter: blur(18px);
    background: rgba(255, 255, 255, .96);
    border: 1px solid rgba(255, 255, 255, .6);
    border-radius: 1.35rem;
    box-shadow: 0 1.5rem 4rem rgba(15, 23, 42, .22);
    color: var(--bo-ink);
}

.bo-search-panel h2,
.bo-search-panel .h1,
.bo-search-panel .h2,
.bo-search-panel .h3,
.bo-search-panel .h4,
.bo-search-panel .h5,
.bo-search-panel .h6,
.bo-search-panel .form-label {
    color: var(--bo-ink);
}

.bo-search-panel .form-control,
.bo-search-panel .form-select {
    background-color: #fff;
    border-color: rgba(31, 58, 95, .32);
    color: var(--bo-ink);
}

.bo-search-panel .form-control::placeholder {
    color: #6b7280;
}

.bo-search-panel .form-control:focus,
.bo-search-panel .form-select:focus {
    border-color: var(--bo-primary);
    box-shadow: 0 0 0 .25rem rgba(31, 58, 95, .16);
}

.bo-stat-card,
.bo-card {
    border: 1px solid var(--fn-border-color);
    border-radius: 1.25rem;
    box-shadow: 0 .75rem 1.8rem rgba(15, 23, 42, .06);
}

.bo-category-card {
    background: var(--fn-body-bg);
    border: 1px solid var(--fn-border-color);
    border-radius: 1.25rem;
    color: inherit;
    display: block;
    height: 100%;
    overflow: hidden;
    text-decoration: none;
    transition: transform .18s ease, box-shadow .18s ease;
}

.bo-category-card:hover,
.bo-provider-card:hover {
    box-shadow: 0 1rem 2.5rem rgba(15, 23, 42, .12);
    transform: translateY(-.18rem);
}

.bo-category-art {
    background: linear-gradient(135deg, var(--bo-primary-soft), rgba(245, 196, 81, .22));
    height: 8rem;
    object-fit: cover;
    width: 100%;
}

.bo-provider-card {
    background: var(--fn-body-bg);
    border: 1px solid var(--fn-border-color);
    border-radius: 1.25rem;
    color: inherit;
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    text-decoration: none;
    transition: transform .18s ease, box-shadow .18s ease;
}

.bo-provider-image {
    aspect-ratio: 4 / 3;
    background: var(--bo-primary-soft);
    object-fit: cover;
    width: 100%;
}

.bo-catalog-hero {
    background:
        radial-gradient(circle at 78% 12%, rgba(245, 196, 81, .32), transparent 22rem),
        linear-gradient(135deg, var(--bo-primary-dark), var(--bo-primary));
    color: var(--bo-light);
    padding: 4.5rem 0 3.75rem;
}

.bo-catalog-hero h1,
.bo-catalog-hero .h1,
.bo-catalog-hero .h2,
.bo-catalog-hero .h3 {
    color: var(--bo-light) !important;
}

.bo-catalog-hero p {
    color: rgba(249, 250, 251, .78);
}

.bo-catalog-hero-card {
    background: rgba(249, 250, 251, .1);
    border: 1px solid rgba(249, 250, 251, .22);
    border-radius: 1.35rem;
    box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, .18);
    display: grid;
    gap: .25rem;
    justify-items: start;
    padding: 1.25rem;
}

.bo-catalog-count {
    color: var(--bo-accent);
    font-size: clamp(2.25rem, 5vw, 4rem);
    font-weight: 900;
    letter-spacing: -.06em;
    line-height: .9;
}

.bo-product-card {
    background: var(--fn-body-bg);
    border: 1px solid rgba(31, 58, 95, .12);
    border-radius: 1.35rem;
    color: inherit;
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    position: relative;
    text-decoration: none;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.bo-product-card:hover {
    border-color: rgba(31, 58, 95, .28);
    box-shadow: 0 1.25rem 2.7rem rgba(31, 58, 95, .14);
    transform: translateY(-.2rem);
}

.bo-product-image-wrap {
    background: linear-gradient(135deg, var(--bo-primary-soft), rgba(245, 196, 81, .2));
    display: block;
    overflow: hidden;
    position: relative;
}

.bo-product-image {
    aspect-ratio: 4 / 3;
    display: block;
    object-fit: cover;
    transition: transform .28s ease;
    width: 100%;
}

.bo-product-card:hover .bo-product-image {
    transform: scale(1.045);
}

.bo-product-chip {
    background: rgba(19, 35, 58, .9);
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 999px;
    bottom: .85rem;
    color: var(--bo-light);
    font-size: .75rem;
    font-weight: 800;
    left: .85rem;
    max-width: calc(100% - 1.7rem);
    overflow: hidden;
    padding: .32rem .65rem;
    position: absolute;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bo-product-body {
    display: grid;
    flex: 1;
    gap: 1.35rem;
    padding: 1.35rem 1.45rem 1.45rem;
}

.bo-product-body h2,
.bo-product-body h3 {
    color: var(--bo-ink);
    font-weight: 900;
    letter-spacing: -.035em;
}

[data-bs-theme="dark"] .bo-product-body h2,
[data-bs-theme="dark"] .bo-product-body h3 {
    color: var(--bo-light);
}

.bo-product-footer {
    align-items: center;
    display: flex;
    justify-content: space-between;
}

.bo-product-price {
    color: var(--bo-primary);
    font-size: 1.02rem;
}

.bo-product-arrow {
    align-items: center;
    background: var(--bo-accent);
    border-radius: 999px;
    color: var(--bo-accent-ink);
    display: inline-flex;
    font-weight: 900;
    height: 2rem;
    justify-content: center;
    width: 2rem;
}

.bo-product-detail-hero {
    background:
        radial-gradient(circle at 82% 16%, rgba(245, 196, 81, .24), transparent 24rem),
        linear-gradient(180deg, var(--bo-primary-soft), rgba(249, 250, 251, 0));
}

.bo-product-detail-image {
    border: .65rem solid var(--fn-body-bg);
    box-shadow: 0 1.25rem 3rem rgba(31, 58, 95, .16);
}

.bo-product-detail-price {
    color: var(--bo-primary);
    font-size: clamp(1.7rem, 3vw, 2.35rem);
    font-weight: 900;
    letter-spacing: -.045em;
}

.bo-portfolio-card {
    background: var(--fn-body-bg);
    border: 1px solid var(--fn-border-color);
    border-radius: 1.25rem;
    color: inherit;
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    text-decoration: none;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.bo-portfolio-card:hover,
.bo-portfolio-card:focus {
    border-color: rgba(245, 196, 81, .55);
    box-shadow: 0 1rem 2.35rem rgba(15, 23, 42, .14);
    transform: translateY(-.18rem);
}

.bo-portfolio-image-wrap {
    background: linear-gradient(135deg, var(--bo-primary-soft), rgba(245, 196, 81, .2));
    display: block;
    overflow: hidden;
    position: relative;
}

.bo-portfolio-image {
    aspect-ratio: 16 / 10;
    display: block;
    object-fit: cover;
    transition: transform .28s ease;
    width: 100%;
}

.bo-portfolio-card:hover .bo-portfolio-image,
.bo-portfolio-card:focus .bo-portfolio-image {
    transform: scale(1.04);
}

.bo-portfolio-count {
    background: rgba(19, 35, 58, .9);
    border-radius: 999px;
    bottom: .8rem;
    color: var(--bo-light);
    font-size: .78rem;
    font-weight: 800;
    left: .8rem;
    padding: .32rem .65rem;
    position: absolute;
}

.bo-portfolio-body {
    display: grid;
    flex: 1;
    gap: 1rem;
    padding: 1.15rem;
}

.bo-portfolio-body .h6 {
    color: var(--bo-ink);
}

[data-bs-theme="dark"] .bo-portfolio-body .h6 {
    color: var(--bo-light);
}

.bo-portfolio-meta {
    align-items: center;
    color: var(--fn-secondary-color);
    display: flex;
    flex-wrap: wrap;
    font-size: .82rem;
    gap: .75rem;
}

.bo-portfolio-link {
    color: var(--bo-accent-deep);
    font-weight: 800;
}

.bo-project-hero {
    background:
        radial-gradient(circle at 82% 12%, rgba(245, 196, 81, .28), transparent 24rem),
        linear-gradient(180deg, var(--bo-primary-soft), rgba(249, 250, 251, 0));
}

.bo-project-main-image,
.bo-project-gallery-image {
    background: var(--bo-primary-soft);
    border-radius: 1.35rem;
    object-fit: cover;
    width: 100%;
}

.bo-project-main-image {
    aspect-ratio: 16 / 10;
    box-shadow: 0 1.25rem 3rem rgba(31, 58, 95, .18);
}

.bo-project-gallery-link {
    display: block;
    overflow: hidden;
    border-radius: 1.1rem;
}

.bo-project-gallery-image {
    aspect-ratio: 4 / 3;
    display: block;
    transition: transform .28s ease;
}

.bo-project-gallery-link:hover .bo-project-gallery-image,
.bo-project-gallery-link:focus .bo-project-gallery-image {
    transform: scale(1.04);
}

.bo-badge,
.bo-badge-accent {
    align-items: center;
    background: var(--bo-accent-soft);
    border-radius: 999px;
    color: var(--bo-accent-deep);
    display: inline-flex;
    font-size: .82rem;
    font-weight: 800;
    gap: .35rem;
    padding: .3rem .65rem;
}

.bo-badge-primary {
    align-items: center;
    background: var(--bo-primary-soft);
    border-radius: 999px;
    color: var(--bo-primary);
    display: inline-flex;
    font-size: .82rem;
    font-weight: 800;
    gap: .35rem;
    padding: .3rem .65rem;
}

.bo-text-primary {
    color: var(--bo-primary) !important;
}

.bo-text-accent {
    color: var(--bo-accent) !important;
}

.bo-surface-soft {
    background: var(--bo-primary-soft);
}

.bo-filter-panel {
    background: var(--fn-body-bg);
    border: 1px solid var(--fn-border-color);
    border-radius: 1.25rem;
    position: sticky;
    top: 6rem;
}

.bo-detail-hero {
    background: linear-gradient(135deg, var(--bo-primary-dark), var(--bo-primary-mid));
    color: #fff;
}

.bo-gallery-main {
    aspect-ratio: 16 / 9;
    border-radius: 1.5rem;
    object-fit: cover;
    width: 100%;
}

.bo-section {
    background: var(--fn-body-bg);
    border: 1px solid var(--fn-border-color);
    border-radius: 1.25rem;
}

.bo-empty {
    border: 1px dashed var(--fn-border-color);
    border-radius: 1.25rem;
    padding: 3rem 1.5rem;
    text-align: center;
}

.pagination {
    --fn-pagination-active-bg: var(--bo-primary);
    --fn-pagination-active-border-color: var(--bo-primary);
    --fn-pagination-color: var(--bo-primary);
    --fn-pagination-focus-box-shadow: 0 0 0 .25rem rgba(31, 58, 95, .14);
    --fn-pagination-hover-color: var(--bo-primary-dark);
    --fn-pagination-disabled-color: var(--bo-muted);
    align-items: center;
    gap: .35rem;
}

.pagination .page-link {
    align-items: center;
    border: 0;
    border-radius: .7rem;
    display: inline-flex;
    font-family: var(--fn-font-sans-serif);
    font-size: .9rem;
    font-variant-numeric: tabular-nums;
    font-weight: 800;
    height: 2.25rem;
    justify-content: center;
    line-height: 1;
    min-width: 2.25rem;
    padding: 0 .75rem;
    text-decoration: none;
}

.pagination .page-item:not(.active) .page-link {
    background: transparent;
    color: var(--bo-primary);
}

.pagination .page-item:not(.active) .page-link:hover {
    background: var(--bo-primary-soft);
    color: var(--bo-primary-dark);
}

.pagination .page-item.active .page-link {
    box-shadow: 0 .55rem 1.25rem rgba(31, 58, 95, .2);
    color: #fff;
}

.pagination .page-item.disabled .page-link {
    background: transparent;
    opacity: .55;
}

@media (max-width: 991.98px) {
    .bo-filter-panel {
        position: static;
    }
}

@media (max-width: 575.98px) {
    .bo-brand-word {
        display: none;
    }

    .bo-brand-mark {
        height: 2.5rem;
        width: 2.5rem;
    }
}

.bo-auth-art {
    background:
        radial-gradient(circle at 18% 12%, rgba(245, 196, 81, .2), transparent 18rem),
        linear-gradient(135deg, rgba(19, 35, 58, .9), rgba(31, 58, 95, .82)),
        url('/vendor/finder/img/home/contractors/hero.jpg') center / cover;
}

.bo-auth-panel {
    box-shadow: 0 1.5rem 4rem rgba(31, 58, 95, .1);
}

.bo-auth-panel .form-control,
.bo-auth-panel .form-select {
    border-color: rgba(31, 58, 95, .24);
}

.bo-auth-panel .form-control:focus,
.bo-auth-panel .form-select:focus {
    border-color: var(--bo-primary);
    box-shadow: 0 0 0 .25rem rgba(31, 58, 95, .12);
}

.bo-auth-art .bo-badge-accent {
    background: var(--bo-accent);
    color: var(--bo-accent-ink);
}

.bo-auth-art p {
    color: rgba(249, 250, 251, .76) !important;
}

.bo-account-nav {
    top: 6rem;
}

.bo-account-nav a,
.bo-list-row {
    align-items: center;
    border-radius: 1rem;
    color: inherit;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    padding: .9rem 1rem;
    text-decoration: none;
}

.bo-account-nav a {
    font-weight: 700;
    justify-content: flex-start;
}

.bo-account-nav a.active,
.bo-account-nav a:hover,
.bo-list-row:hover {
    background: var(--bo-primary-soft);
    color: var(--bo-primary);
}

.bo-list-row {
    background: var(--fn-body-bg);
    border: 1px solid var(--fn-border-color);
}

.bo-chat {
    display: grid;
    gap: 1rem;
}

.bo-message {
    display: flex;
}

.bo-message-me {
    justify-content: flex-end;
}

.bo-message-bubble {
    background: var(--bo-primary-soft);
    border-radius: 1rem 1rem 1rem .25rem;
    max-width: min(34rem, 92%);
    padding: .85rem 1rem;
}

.bo-message-me .bo-message-bubble {
    background: linear-gradient(135deg, var(--bo-accent), var(--bo-accent-strong));
    border-radius: 1rem 1rem .25rem 1rem;
    color: var(--bo-accent-ink);
}

.place-items-center {
    place-items: center;
}

.justify-self-start {
    justify-self: start;
}

.bo-auth-art,
.bo-auth-art h1,
.bo-auth-art .h1,
.bo-auth-art .h2,
.bo-auth-art .h3,
.bo-auth-art .h4,
.bo-auth-art .h5,
.bo-auth-art .h6 {
    color: #fff !important;
}
