.banner_b001 {
    position: relative;
    max-width: var(--main-width, 1200px);
    margin: 0 auto;
    overflow: hidden;
}

.banner_b001.banner-fullwidth {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    max-width: none;
}

.banner_b001-bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.banner_b001-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
}

.banner_b001-content {
    position: relative;
    z-index: 1;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: var(--banner_b001-items-align, flex-start);
    padding: 3rem 1.25rem;
    text-align: var(--banner_b001-align, left);
}

.banner_b001.banner-fullwidth .banner_b001-content {
    max-width: var(--main-width, 1200px);
    margin: 0 auto;
}

.banner_b001-heading {
    font-size: var(--theme-font-size-h3, 1.5rem);
    font-weight: 700;
    line-height: 1.3;
    margin-bottom: 0.75rem;
}

.banner_b001-subheading {
    font-size: var(--theme-font-size-h4, 1.3rem);
    line-height: 1.7;
    max-width: 36rem;
}

[data-device="pc"] .banner_b001:not(.banner-fullwidth) .banner_b001-content {
    padding-left: 10%;
    padding-right: 10%;
}

[data-device="phone"] .banner_b001-content,
[data-device="pad"] .banner_b001-content {
    padding: 2rem 5%;
}

[data-device="phone"] .banner_b001-heading {
    font-size: var(--theme-font-size-h3, 1.25rem);
}

[data-device="phone"] .banner_b001-subheading {
    font-size: var(--theme-font-size-h4, 1rem);
    max-width: 100%;
}