:root {
    --site-motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
    --site-motion-feedback: 300ms;
    --site-motion-image: 700ms;
}

.bg-lightblue {
    background-color: #EFF4FC !important;
}

.public-menu-toggle.navbar-toggler {
    display: grid;
    place-items: center;
    width: 3rem;
    height: 3rem;
    padding: 0;
    color: var(--bs-primary);
    background: transparent;
    border: 1px solid var(--bs-primary-border-subtle);
    transition: background-color var(--site-motion-feedback) var(--site-motion-ease);
}

.public-menu-toggle:hover,
.public-menu-toggle[aria-expanded='true'] {
    background-color: var(--bs-primary-bg-subtle);
}

.public-menu-toggle.navbar-toggler:focus {
    box-shadow: none;
}

.public-menu-toggle:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 4px;
}

.public-menu-toggle-lines {
    position: relative;
    width: 1.25rem;
    height: 1rem;
}

.public-menu-toggle-lines::before,
.public-menu-toggle-lines::after {
    position: absolute;
    inset-inline: 0;
    height: 1px;
    content: '';
    background: currentColor;
    transition: transform var(--site-motion-feedback) var(--site-motion-ease), top var(--site-motion-feedback) var(--site-motion-ease), bottom var(--site-motion-feedback) var(--site-motion-ease);
}

.public-menu-toggle-lines::before {
    top: 0.25rem;
}

.public-menu-toggle-lines::after {
    bottom: 0.25rem;
}

.public-menu-toggle[aria-expanded='true'] .public-menu-toggle-lines::before {
    top: 0.5rem;
    transform: rotate(45deg);
}

.public-menu-toggle[aria-expanded='true'] .public-menu-toggle-lines::after {
    bottom: calc(0.5rem - 1px);
    transform: rotate(-45deg);
}

@media (max-width: 991.98px) {
    .public-menu-surface {
        margin-top: 1.5rem;
        padding: 0.5rem 1.5rem 1.5rem;
        background: rgba(var(--bs-primary-rgb), 0.06);
    }

    .public-menu-panel .nav-item + .nav-item {
        border-top: 1px solid rgba(var(--bs-primary-rgb), 0.16);
    }

    .public-menu-panel .nav-link {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 1.5rem;
        font-size: 1.25rem;
        color: var(--bs-primary-text-emphasis);
    }

    .public-menu-panel .public-nav-arrow {
        font-size: 0.875rem;
        color: var(--bs-primary);
        transition: transform var(--site-motion-feedback) var(--site-motion-ease);
    }

    .public-menu-panel .nav-link:hover .public-nav-arrow,
    .public-menu-panel .nav-link:focus-visible .public-nav-arrow {
        transform: translate(0.125rem, -0.125rem);
    }

    .public-menu-panel .nav-link:focus-visible {
        outline: 2px solid var(--bs-primary);
        outline-offset: 4px;
    }

    .public-menu-signature {
        padding-top: 1.5rem;
        border-top: 1px solid rgba(var(--bs-primary-rgb), 0.16);
        color: var(--bs-primary-text-emphasis);
    }
}

@media (min-width: 992px) {
    .public-navbar .public-menu-toggle {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .public-menu-toggle,
    .public-menu-toggle-lines::before,
    .public-menu-toggle-lines::after,
    .public-menu-panel .public-nav-arrow {
        transition: none;
    }
}

.public-site #main-content {
    overflow-x: clip;
    overflow-wrap: anywhere;
}

.public-site #main-content .row > *,
.public-site #main-content .d-flex > *,
.public-site footer .row > * {
    min-width: 0;
}

/* Entrance banners and the footer remain static, including their interactive children. */
.public-site :is(.page-hero, footer),
.public-site :is(.page-hero, footer)::before,
.public-site :is(.page-hero, footer)::after,
.public-site :is(.page-hero, footer) *,
.public-site :is(.page-hero, footer) *::before,
.public-site :is(.page-hero, footer) *::after {
    animation: none;
    transition: none;
}

.public-site .page-hero .home-type-link-icon i,
.public-site .page-hero .project-image-link img {
    transform: none;
}

.home-type-hero {
    position: relative;
    overflow: clip;
    isolation: isolate;
    padding-block: 3rem 2rem;
    background-color: var(--bs-white);
}

.home-type-wordmark {
    position: absolute;
    inset-inline: 0;
    bottom: -0.15em;
    color: transparent;
    -webkit-text-stroke: 1px rgba(var(--bs-primary-rgb), 0.5);
    font-size: clamp(6rem, 19vw, 20rem);
    font-weight: 600;
    letter-spacing: -0.04em;
    line-height: 0.85;
    text-align: center;
    white-space: nowrap;
    user-select: none;
    pointer-events: none;
}

.home-type-heading {
    max-width: 17ch;
    font-size: clamp(2.5rem, 4.5vw, 4.5rem);
    line-height: 1.08;
    letter-spacing: -0.04em;
    text-wrap: balance;
}

.home-type-description {
    max-width: 44ch;
    color: var(--bs-secondary-color);
    line-height: 1.8;
}

.home-type-footer {
    margin-top: 3rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--bs-primary-border-subtle);
}

.home-type-signature {
    color: var(--bs-primary-text-emphasis);
}

.home-type-link {
    color: var(--bs-primary-text-emphasis);
}

.home-type-link-icon {
    width: 3rem;
    height: 3rem;
    color: var(--bs-white);
    background: var(--bs-primary);
    transition: background-color var(--site-motion-feedback) var(--site-motion-ease);
}

.home-type-link-icon i {
    transition: transform var(--site-motion-feedback) var(--site-motion-ease);
}

.home-type-link:hover,
.home-type-link:focus-visible {
    color: var(--bs-primary);
}

.home-type-link:hover .home-type-link-icon,
.home-type-link:focus-visible .home-type-link-icon {
    background: var(--bs-primary-text-emphasis);
}

.home-type-link:hover i,
.home-type-link:focus-visible i {
    transform: translate(0.125rem, -0.125rem);
}

.home-type-link:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 4px;
}

.home-type-hero ::selection {
    background: var(--bs-primary);
    color: var(--bs-white);
}

@media (min-width: 992px) {
    .home-type-hero {
        padding-block: 4.5rem 2rem;
    }

    .home-type-description {
        padding-bottom: 0.25rem;
    }

    .home-type-footer {
        margin-top: 4.5rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .home-type-link-icon,
    .home-type-link-icon i {
        transition: none;
    }
}

.home-text-link,
.studio-text-link,
.partners-text-link {
    color: var(--bs-body-color);
    transition: color var(--site-motion-feedback) var(--site-motion-ease), border-color var(--site-motion-feedback) var(--site-motion-ease);
}

.home-text-link:hover,
.home-text-link:focus-visible,
.studio-text-link:hover,
.studio-text-link:focus-visible,
.partners-text-link:hover,
.partners-text-link:focus-visible {
    color: var(--bs-primary);
    border-color: currentColor !important;
}

.home-project-image,
.project-card-image {
    height: clamp(18rem, 42vw, 32rem);
    transition: transform var(--site-motion-image) var(--site-motion-ease);
}

.home-project-arrow,
.project-card-arrow {
    transition: transform var(--site-motion-feedback) var(--site-motion-ease);
}

.home-project-title,
.project-card-title,
.studio-service h3,
.partner-service h3,
.contact-card-value {
    transition: color var(--site-motion-feedback) var(--site-motion-ease);
}

.home-project-link:hover .home-project-image,
.home-project-link:focus-visible .home-project-image,
.project-card-link:hover .project-card-image,
.project-card-link:focus-visible .project-card-image {
    transform: scale(1.015);
}

.home-project-link:hover .home-project-arrow,
.home-project-link:focus-visible .home-project-arrow,
.project-card-link:hover .project-card-arrow,
.project-card-link:focus-visible .project-card-arrow {
    transform: translate(0.125rem, -0.125rem);
}

.home-project-link:hover .home-project-title,
.home-project-link:focus-visible .home-project-title,
.project-card-link:hover .project-card-title,
.project-card-link:focus-visible .project-card-title {
    color: var(--bs-primary);
}

.home-text-link:focus-visible,
.studio-text-link:focus-visible,
.partners-text-link:focus-visible,
.partner-service:focus-visible,
.home-project-link:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 4px;
}

.project-card-link:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 4px;
}

.project-image-link {
    overflow: hidden;
}

.project-image-link img {
    transition: transform var(--site-motion-image) var(--site-motion-ease);
}

@media (hover: hover) and (pointer: fine) {
    .project-image-link:hover img {
        transform: scale(1.015);
    }
}

.office-media {
    height: clamp(18rem, 45vw, 31.25rem);
}

.public-site footer {
    overflow-wrap: anywhere;
}

.public-site #main-content [id] {
    scroll-margin-top: 1.5rem;
}

.studio-image {
    height: clamp(20rem, 55vw, 40rem);
    transition: transform var(--site-motion-image) var(--site-motion-ease);
}

.studio-image-frame:hover .studio-image {
    transform: scale(1.015);
}

.studio-service {
    transition: border-color var(--site-motion-feedback) var(--site-motion-ease);
}

.studio-service:hover {
    border-color: var(--bs-primary) !important;
}

.studio-service:hover h3 {
    color: var(--bs-primary);
}

.partner-service {
    transition: background-color var(--site-motion-feedback) var(--site-motion-ease), border-color var(--site-motion-feedback) var(--site-motion-ease);
}

.partner-service:hover,
.partner-service:focus-visible {
    background-color: rgba(var(--bs-primary-rgb), 0.04);
    border-color: var(--bs-primary) !important;
}

.partner-service:hover h3,
.partner-service:focus-visible h3 {
    color: var(--bs-primary);
}

.partner-service-arrow {
    transition: transform var(--site-motion-feedback) var(--site-motion-ease);
}

.partner-service:hover .partner-service-arrow,
.partner-service:focus-visible .partner-service-arrow {
    transform: translate(0.125rem, -0.125rem);
}

.contact-card {
    color: var(--bs-body-color);
    background-color: var(--bs-white);
    transition: border-color var(--site-motion-feedback) var(--site-motion-ease);
}

.contact-card-icon {
    width: 3rem;
    height: 3rem;
}

.contact-card-arrow {
    transition: transform var(--site-motion-feedback) var(--site-motion-ease);
}

a.contact-card:hover,
a.contact-card:focus-visible {
    color: var(--bs-body-color);
    border-color: var(--bs-primary) !important;
}

a.contact-card:hover .contact-card-value,
a.contact-card:focus-visible .contact-card-value {
    color: var(--bs-primary);
}

a.contact-card:hover .contact-card-arrow,
a.contact-card:focus-visible .contact-card-arrow {
    transform: translate(0.125rem, -0.125rem);
}

a.contact-card:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 4px;
}

.btn.categories-btn {
    --bs-btn-color: var(--bs-body-color);
    --bs-btn-bg: var(--bs-body-bg);
    --bs-btn-hover-color: var(--bs-body-color);
    --bs-btn-hover-bg: #EFF4FC;
    --bs-btn-active-color: var(--bs-body-color);
    --bs-btn-active-bg: #EFF4FC;
    --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}

.btn.categories-btn:hover,
.btn.categories-btn:active,
.btn.categories-btn.active {
    background-color: #EFF4FC !important;
}

.project-atlas-map {
    height: clamp(22rem, 60vh, 38rem);
    isolation: isolate;
}

.project-atlas-list {
    max-height: 22rem;
}

@media (min-width: 992px) {
    .privacy-contents {
        max-height: calc(100dvh - 1.5rem);
        overflow-y: auto;
    }

    .project-atlas-list {
        height: clamp(22rem, 60vh, 38rem);
        max-height: none;
    }
}

.project-atlas-thumbnail {
    width: 4rem;
    height: 4rem;
}

.project-map-light-tiles {
    filter: grayscale(1) contrast(0.85) brightness(1.08);
}

.project-map-popup img {
    height: 9rem;
}

.project-map-cluster {
    display: grid;
    place-items: center;
    background: var(--bs-primary);
    color: var(--bs-white);
    border: 3px solid var(--bs-white);
    border-radius: 50%;
    box-shadow: var(--bs-box-shadow-sm);
    font-family: var(--bs-body-font-family);
    font-size: 1rem;
    font-weight: 600;
}

.project-atlas-map .leaflet-control-zoom {
    border: 0;
    box-shadow: var(--bs-box-shadow-sm);
}

.project-atlas-map .leaflet-control-zoom a {
    color: var(--bs-body-color);
    background-color: var(--bs-body-bg);
}

.project-atlas-map .leaflet-popup-content-wrapper {
    border-radius: var(--bs-border-radius);
    font-family: var(--bs-body-font-family);
}

.project-atlas-map .leaflet-popup-content a {
    color: var(--bs-primary);
    font-weight: 500;
    text-underline-offset: 0.25em;
}

.project-map-dot {
    transition: transform var(--site-motion-feedback) var(--site-motion-ease);
}

.project-map-pin {
    color: var(--bs-primary);
}

.project-map-pin svg {
    display: block;
    transform-origin: 50% 95%;
    transition: transform var(--site-motion-feedback) var(--site-motion-ease);
}

.project-map-pin:hover svg,
.project-map-pin:focus-visible svg {
    transform: scale(1.1);
}

.project-map-pin:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 4px;
    border-radius: var(--bs-border-radius);
}

.leaflet-marker-icon:hover .project-map-dot,
.leaflet-marker-icon:focus-visible .project-map-dot {
    transform: scale(1.2);
}

.client-card {
    transition: border-color var(--site-motion-feedback) var(--site-motion-ease);
}

@media (prefers-reduced-motion: reduce) {
    .contact-card,
    .contact-card-arrow,
    .partner-service,
    .partner-service-arrow,
    .studio-image,
    .studio-service,
    .home-project-image,
    .project-card-image,
    .home-project-arrow,
    .project-card-arrow,
    .project-image-link img,
    .home-text-link,
    .studio-text-link,
    .partners-text-link,
    .home-project-title,
    .project-card-title,
    .studio-service h3,
    .partner-service h3,
    .contact-card-value,
    .client-card,
    .project-map-dot,
    .project-map-pin svg {
        transition: none;
    }
}
.client-logo {
    height: 6.25rem;
}

.client-card:hover {
    border-color: var(--bs-primary);
}

.project-description {
    white-space: pre-line;
    overflow-wrap: anywhere;
}
