.navbar-dark {
    background-color: #000000;
}

.bp-home-carousel-wrap {
    padding-top: 50px;
    padding-bottom: 20px;
}

.bp-home-shop-switch {
    padding-bottom: 12px;
}

.bp-home-classes-featured {
    padding: 6px 0 28px;
}

.bp-home-classes-featured__section {
    position: relative;
    overflow: hidden;
    background-color: #0f1117;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center center;
}

.bp-home-classes-featured__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(9, 11, 16, 0.8) 0%, rgba(9, 11, 16, 0.7) 60%, rgba(9, 11, 16, 0.86) 100%);
}

.bp-home-classes-featured__content {
    position: relative;
    z-index: 1;
    padding: 30px 0 22px;
}

.bp-home-classes-featured__gallery {
    margin-bottom: 18px;
}

.bp-feature-gallery {
    display: grid;
    grid-template-columns: 2fr 1fr;
    grid-template-rows: repeat(2, minmax(140px, 1fr));
    gap: 12px;
}

.bp-feature-gallery__item {
    margin: 0;
    overflow: hidden;
    border-radius: 20px;
    box-shadow: 0 14px 28px rgba(6, 8, 13, 0.35);
}

.bp-feature-gallery__item img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 140px;
    object-fit: cover;
    object-position: center center;
}

.bp-feature-gallery__item--1 {
    grid-column: 1 / 2;
    grid-row: 1 / 3;
}

.bp-feature-gallery__item--2 {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
}

.bp-feature-gallery__item--3 {
    grid-column: 2 / 3;
    grid-row: 2 / 3;
}

.bp-feature-gallery--count-1 {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
}

.bp-feature-gallery--count-1 .bp-feature-gallery__item--1 {
    grid-column: 1 / 2;
    grid-row: 1 / 2;
}

.bp-feature-gallery--count-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: auto;
}

.bp-feature-gallery--count-2 .bp-feature-gallery__item--1 {
    grid-column: 1 / 2;
    grid-row: 1 / 2;
}

.bp-feature-gallery--count-2 .bp-feature-gallery__item--2 {
    grid-column: 2 / 3;
    grid-row: 1 / 2;
}

.bp-home-classes-featured__header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.bp-home-classes-featured__title {
    margin: 50px 0 8px;
    color: #ffffff;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-home-classes-featured__description {
    margin: 0;
    max-width: 760px;
    color: rgba(255, 255, 255, 0.88);
    font-size: 13px;
    line-height: 1.55;
}

.bp-home-classes-featured__header-cta {
    white-space: nowrap;
}

.bp-home-classes-featured__products .products {
    margin: 0;
    padding: 0;
    list-style: none;
}

.bp-home-classes-featured__products .products::before,
.bp-home-classes-featured__products .products::after {
    display: none;
}

.bp-home-classes-featured__products .products li.product {
    float: none;
    width: auto;
    margin: 0;
    padding-left: 7px;
    padding-right: 7px;
    margin-bottom: 14px;
}

.bp-home-classes-featured__footer {
    margin-top: 14px;
    text-align: center;
}

.bp-home-courses-featured {
    position: relative;
    padding: 0 0 28px;
    background: #f4f4f5;
}

.bp-home-courses-featured--dark {
    background-color: #14171c;
    background-size: cover;
    background-repeat: no-repeat;
    color: #ffffff;
}

.bp-home-courses-featured__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(8, 10, 14, 0.78) 0%, rgba(8, 10, 14, 0.88) 100%);
    pointer-events: none;
}

.bp-home-courses-featured--dark > .container {
    position: relative;
    z-index: 1;
}

.bp-home-courses-featured--dark .bp-home-courses-featured__title {
    color: #ffffff;
}

.bp-home-courses-featured--dark .bp-home-courses-featured__description {
    color: rgba(255, 255, 255, 0.85);
}

.bp-home-courses-featured__content {
    padding: 54px 0 48px;
}

.bp-home-courses-featured__header {
    display: grid;
    grid-template-columns: 128px minmax(0, 1fr) auto;
    gap: 22px;
    align-items: center;
    margin-bottom: 42px;
}

.bp-home-courses-featured__brand {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 112px;
}

.bp-home-courses-featured__logo {
    display: block;
    width: 112px;
    max-width: 100%;
    height: auto;
}

.bp-home-courses-featured__title {
    margin: 0 0 8px;
    color: #06080d;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-home-courses-featured__description {
    margin: 0;
    max-width: 640px;
    color: #111827;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-home-courses-featured__header-action {
    align-self: center;
    padding-left: 18px;
}

.bp-home-courses-featured__header-cta {
    white-space: nowrap;
    border-color: #c85aa0;
    background: #c85aa0;
}

.bp-home-courses-featured__header-cta:hover {
    border-color: #b94691;
    background: #b94691;
}

.bp-home-courses-featured__products .products {
    margin: 0;
    padding: 0;
    list-style: none;
}

.bp-home-courses-featured__products .products::before,
.bp-home-courses-featured__products .products::after {
    display: none;
}

.bp-home-courses-featured__products .products li.product {
    float: none;
    width: auto;
    margin: 0;
    padding-left: 7px;
    padding-right: 7px;
    margin-bottom: 14px;
}

.bp-home-courses-featured__footer {
    margin-top: 22px;
    text-align: center;
}

.bp-home-instructors {
    padding: 0 0 28px;
}

.bp-home-instructors__section {
    position: relative;
    overflow: hidden;
    background-color: #11131a;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center center;
}

.bp-home-instructors__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(8, 10, 14, 0.78) 0%, rgba(8, 10, 14, 0.68) 56%, rgba(8, 10, 14, 0.84) 100%);
}

.bp-home-instructors__content {
    position: relative;
    z-index: 1;
    padding: 54px 0 34px;
}

.bp-home-instructors__header {
    max-width: 760px;
    margin-bottom: 22px;
}

.bp-home-instructors__title {
    margin: 0 0 8px;
    color: #ffffff;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-home-instructors__description {
    margin: 0;
    color: rgba(255, 255, 255, 0.9);
    font-size: 13px;
    line-height: 1.55;
}

.bp-home-instructors__footer {
    margin-top: 26px;
    text-align: center;
}

.bp-home-news-featured {
    padding: 0 0 28px;
    background: #f4f4f5;
}

.bp-home-news-featured__content {
    padding: 46px 0 40px;
}

.bp-home-news-featured__header {
    max-width: 760px;
    margin-bottom: 34px;
}

.bp-home-news-featured__title,
.bp-news-page__title {
    margin: 0 0 8px;
    color: #06080d;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-home-news-featured__description,
.bp-news-page__description {
    margin: 0;
    max-width: 860px;
    color: #111827;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-news-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 24px;
}

.bp-news-card {
    display: flex;
    flex-direction: column;
    min-height: 100%;
    overflow: hidden;
    border-radius: 16px;
    background: #ffffff;
    box-shadow: 0 8px 24px rgba(21, 32, 60, 0.08);
}

.bp-news-card__media {
    position: relative;
    display: block;
    width: 100%;
    padding-top: 75%;
    overflow: hidden;
    background: #e9edf6;
}

.bp-news-card__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
}

.bp-news-card__placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #2d5eb5;
    font-size: 48px;
    font-weight: 700;
}

.bp-news-card__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 9px;
    padding: 18px 24px 24px;
}

.bp-news-card__title {
    margin: 0;
    color: #07090f;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.25;
}

.bp-news-card__title a {
    color: inherit;
}

.bp-news-card__excerpt {
    margin: 0;
    color: #111827;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.35;
}

.bp-news-card__cta {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    min-height: 34px;
    margin-top: auto;
    border-radius: 999px;
    color: #ffffff;
    background: #2d5eb5;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
}

.bp-news-card__cta:hover {
    color: #ffffff;
    background: #244d98;
}

.bp-home-news-featured__footer,
.bp-news-page__footer {
    margin-top: 34px;
    text-align: center;
}

.bp-news-page {
    padding: 118px 0 64px;
    background: #f4f4f5;
}

.bp-news-page__header {
    margin-bottom: 36px;
}

.bp-news-page__empty {
    margin: 0;
    color: #5b6780;
    font-size: 14px;
}

.bp-news-load-more__loading,
.bp-news-load-more.is-loading .bp-news-load-more__label {
    display: none;
}

.bp-news-load-more.is-loading .bp-news-load-more__loading {
    display: inline;
}

.bp-post-single {
    padding: 118px 0 64px;
    background: #f4f4f5;
}

.bp-post-single__container {
    width: min(100%, 980px);
    margin: 0 auto;
    padding: 0 15px;
}

.bp-post-single__header {
    max-width: 760px;
    margin-bottom: 26px;
}

.bp-post-single__title {
    margin: 0;
    color: #20242d;
    font-size: clamp(28px, 3vw, 42px);
    font-weight: 700;
    line-height: 1.2;
}

.bp-post-single__meta {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 10px;
    color: #4f5664;
    font-size: 11px;
    font-weight: 500;
    line-height: 1.2;
}

.bp-post-single__media {
    margin: 0 0 44px;
}

.bp-post-single__media img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 520px;
    object-fit: cover;
    object-position: center center;
}

.bp-post-single__content {
    color: #111827;
    font-size: 15px;
    line-height: 1.7;
}

.bp-post-single__content > * {
    margin-top: 0;
    margin-bottom: 22px;
}

.bp-post-single__content > *:last-child {
    margin-bottom: 0;
}

.bp-post-single__content p {
    color: #111827;
}

.bp-post-single__content h2,
.bp-post-single__content h3,
.bp-post-single__content h4 {
    margin-top: 34px;
    margin-bottom: 14px;
    color: #20242d;
    font-weight: 700;
    line-height: 1.18;
}

.bp-post-single__content h2 {
    font-size: clamp(25px, 2.4vw, 34px);
}

.bp-post-single__content h3 {
    font-size: clamp(21px, 2vw, 28px);
}

.bp-post-single__content h4 {
    font-size: 20px;
}

.bp-post-single__content ul,
.bp-post-single__content ol {
    padding-left: 22px;
}

.bp-post-single__content li + li {
    margin-top: 6px;
}

.bp-post-single__content blockquote {
    margin: 28px 0;
    padding: 0 0 0 18px;
    border-left: 2px solid #d5d9e2;
    color: #111827;
    font-size: 14px;
    line-height: 1.6;
}

.bp-post-single__content img {
    max-width: 100%;
    height: auto;
}

.bp-post-single__pages {
    display: flex;
    gap: 8px;
    margin-top: 28px;
}

.bp-home-contact {
    padding: 0 0 64px;
    background: #f4f4f5;
}

.bp-home-contact__content {
    padding: 36px 0 0;
}

.bp-home-contact__header {
    max-width: 720px;
    margin-bottom: 28px;
}

.bp-home-contact__title {
    margin: 0 0 8px;
    color: #06080d;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-home-contact__description {
    margin: 0;
    color: #06080d;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-home-contact__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    align-items: stretch;
}

.bp-home-contact__card {
    overflow: hidden;
    border-radius: 24px;
    background: #ffffff;
}

.bp-home-contact__form-card {
    padding: 28px 32px 32px;
}

.bp-home-contact__location-card {
    display: flex;
    flex-direction: column;
}

.bp-home-contact__location-card .bp-home-contact__card-title {
    padding: 28px 32px 0;
}

.bp-home-contact__card-title {
    margin: 0 0 18px;
    color: #06080d;
    font-size: clamp(20px, 1.7vw, 26px);
    font-weight: 700;
    line-height: 1.15;
}

.bp-home-contact__form {
    min-height: 0;
}

.bp-home-contact__empty {
    margin: 0;
    color: #5b6780;
    font-size: 14px;
}

.bp-home-contact__form .forminator-ui {
    margin: 0;
}

.bp-home-contact__form .forminator-row {
    margin-bottom: 10px !important;
}

.bp-home-contact__form .forminator-field {
    margin: 0 !important;
}

.bp-home-contact__form .forminator-label,
.bp-home-contact__form .forminator-required,
.bp-home-contact__form .forminator-description,
.bp-home-contact__form .forminator-description-words,
.bp-home-contact__form .forminator-counter,
.bp-home-contact__form a[href*="wp-admin"] {
    display: none !important;
}

.bp-home-contact__form .forminator-input,
.bp-home-contact__form .forminator-textarea {
    width: 100% !important;
    border: 1px solid #cfd3da !important;
    border-radius: 999px !important;
    padding: 9px 20px !important;
    color: #111827 !important;
    background: #ffffff !important;
    font-size: 13px !important;
    line-height: 1.4 !important;
    box-shadow: none !important;
}

.bp-home-contact__form .forminator-textarea {
    min-height: 120px !important;
    border-radius: 18px !important;
    padding: 12px 20px !important;
    resize: vertical;
}

.bp-home-contact__form .forminator-checkbox {
    margin: 4px 0 !important;
    display: flex !important;
    align-items: flex-start !important;
    gap: 8px !important;
}

.bp-home-contact__form .forminator-checkbox-label {
    color: #6b7280 !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

.bp-home-contact__form .forminator-button-submit {
    width: 100% !important;
    min-height: 38px !important;
    margin-top: 14px !important;
    border: 0 !important;
    border-radius: 999px !important;
    color: #ffffff !important;
    background: #2d5eb5 !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    box-shadow: none !important;
}

.bp-home-contact__map {
    display: block;
    margin: 0 24px;
    overflow: hidden;
    border-radius: 18px;
    background: #e9edf6;
    aspect-ratio: 1.6 / 1;
}

.bp-home-contact__map img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
}

.bp-home-contact__details {
    display: grid;
    grid-template-columns: minmax(100px, 130px) minmax(0, 1fr);
    gap: 20px;
    align-items: center;
    padding: 22px 32px 28px;
    margin-top: auto;
}

.bp-home-contact__logo {
    display: block;
    width: 120px;
    max-width: 100%;
    height: auto;
}

.bp-home-contact__address {
    margin: 0 0 4px;
    color: #06080d;
    font-size: 13px;
    font-style: normal;
    font-weight: 700;
    line-height: 1.4;
}

.bp-home-contact__phone {
    display: inline-flex;
    color: #06080d;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.4;
}

.bp-shop-filters {
    margin: 0;
    padding: 0;
    background: transparent;
    font-size: 14px;
}

.bp-shop-filters__row {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.bp-shop-filters__group {
    border-bottom: 1px solid #e5e7eb;
    padding: 0;
    margin: 0;
}

.bp-shop-filters__group:last-of-type {
    border-bottom: 0;
}

.bp-shop-filters__group-title {
    list-style: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 0;
    color: #06080d;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.2;
    cursor: pointer;
    user-select: none;
}

.bp-shop-filters__group-title::-webkit-details-marker {
    display: none;
}

.bp-shop-filters__group-title::after {
    content: "";
    width: 10px;
    height: 10px;
    margin-left: 12px;
    border-right: 2px solid #06080d;
    border-bottom: 2px solid #06080d;
    transform: rotate(45deg) translateY(-2px);
    transition: transform 0.2s ease;
    flex-shrink: 0;
}

.bp-shop-filters__group[open] > .bp-shop-filters__group-title::after {
    transform: rotate(-135deg) translateY(2px);
}

.bp-shop-filters__group-body {
    padding: 0 0 18px;
}

.bp-shop-filters__field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0;
}

.bp-shop-filters__field-label {
    font-size: 11px;
    font-weight: 500;
    color: #6b7280;
    text-transform: lowercase;
}

.bp-shop-filters__field input[type="number"],
.bp-shop-filters__field input[type="text"],
.bp-shop-filters__field select {
    width: 100%;
    height: 38px;
    padding: 0 14px;
    border: 1px solid #d1d5db;
    border-radius: 999px;
    background: #ffffff;
    color: #06080d;
    font-size: 13px;
    line-height: 1.2;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.bp-shop-filters__field input[type="number"]:focus,
.bp-shop-filters__field input[type="text"]:focus,
.bp-shop-filters__field select:focus {
    border-color: #2d5eb5;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.12);
}

/* A native <select> clips its selected text (accents / descenders — "Órák",
   "Minden oktató") when boxed to a fixed height with no vertical padding, the
   way the shared input rule above sets it. Give the dropdown auto height with
   vertical padding and a normal line-height so the label isn't cut off. */
.bp-shop-filters__field select {
    height: auto;
    min-height: 40px;
    padding-top: 8px;
    padding-bottom: 8px;
    line-height: 1.4;
    box-sizing: border-box;
}

.bp-shop-filters__field input::placeholder {
    color: #9ca3af;
}

.bp-shop-filters__price-row {
    display: flex;
    align-items: flex-end;
    gap: 8px;
}

.bp-shop-filters__field--price {
    flex: 1;
    min-width: 0;
}

.bp-shop-filters__price-separator {
    align-self: center;
    color: #9ca3af;
    padding: 0 4px;
    font-size: 14px;
    line-height: 38px;
}

.bp-shop-filters__checkbox-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* Sub-grouped sections inside a filter group (e.g. the Requirements
 * block, which has one section per requirement type). */
.bp-shop-filters__sub-group {
    margin: 0 0 14px;
}

.bp-shop-filters__sub-group:last-child {
    margin-bottom: 0;
}

.bp-shop-filters__sub-title {
    margin: 0 0 6px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b6f78;
}

.bp-shop-filters__checkbox-list li {
    margin: 0;
}

.bp-shop-filters__checkbox {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    color: #1f2937;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.4;
    cursor: pointer;
}

.bp-shop-filters__checkbox input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #2d5eb5;
    cursor: pointer;
}

.bp-shop-filters__actions {
    display: flex;
    align-items: stretch;
    flex-direction: column;
    gap: 10px;
    padding: 18px 0 4px;
}

.bp-shop-filters__actions .button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    min-height: 40px;
    padding: 0 18px;
    border: 0;
    border-radius: 999px;
    background: #2d5eb5;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-shop-filters__actions .button:hover,
.bp-shop-filters__actions .button:focus {
    background: #244d98;
}

/* When JS is active the form auto-submits on change — hide the Apply
   button (still rendered as a no-JS fallback). */
.bp-shop-filters--auto .bp-shop-filters__actions .button[type="submit"] {
    display: none;
}

.bp-shop-filters__reset {
    align-self: center;
    color: #6b7280;
    font-size: 12px;
    font-weight: 600;
    text-decoration: underline;
    text-decoration-color: rgba(107, 114, 128, 0.4);
    text-underline-offset: 3px;
}

.bp-shop-filters__reset:hover {
    color: #2d5eb5;
    text-decoration-color: currentColor;
}

.bp-shop-filters--sidebar {
    position: sticky;
    top: 20px;
}

.bp-product-type-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 2;
    display: inline-block;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    color: #fff;
    line-height: 1;
}

.bp-product-type-badge.is-course {
    background: #2f5fb8;
}

.bp-product-type-badge.is-studio {
    background: #c35aa0;
}

@media (max-width: 767px) {
    .bp-shop-filters--sidebar {
        position: static;
        top: auto;
    }

    .bp-shop-filters__group-title {
        padding: 14px 0;
    }
}

.bp-shop-page {
    padding: 10px 0 30px;
}

.bp-shop-page__hero {
    margin-bottom: 18px;
    padding: 22px;
    border-radius: 18px;
    background: linear-gradient(135deg, #ffffff 0%, #f3f6fc 100%);
    box-shadow: 0 8px 26px rgba(15, 28, 63, 0.08);
}

.bp-shop-page__title {
    margin: 0 0 6px;
    color: #10141f;
    font-size: 30px;
    font-weight: 700;
    line-height: 1.2;
}

.bp-shop-page__description {
    margin: 0;
    max-width: 720px;
    color: #53607a;
    font-size: 14px;
}

.bp-shop-type-switch {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 18px;
}

.bp-shop-type-card {
    position: relative;
    display: block;
    min-height: 136px;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 12px 24px rgba(15, 27, 54, 0.14);
    text-decoration: none;
    color: #fff;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.bp-shop-type-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 30px rgba(15, 27, 54, 0.2);
}

.bp-shop-type-card__media,
.bp-shop-type-card__overlay {
    position: absolute;
    inset: 0;
}

.bp-shop-type-card__media {
    background-color: #dde5f2;
    background-size: cover;
    background-position: center center;
    transition: filter 0.2s ease;
}

.bp-shop-type-card__overlay {
    background: linear-gradient(120deg, rgba(8, 13, 30, 0.3) 0%, rgba(8, 13, 30, 0.68) 100%);
}

.bp-shop-type-card__content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
    height: 100%;
    padding: 16px;
}

.bp-shop-type-card__title {
    margin: 70px 0 0;
    font-size: clamp(24px, 2.4vw, 36px);
    font-weight: 700;
    line-height: 1.15;
}

.bp-shop-type-card__description {
    margin: 0;
    max-width: 360px;
    font-size: 13px;
    line-height: 1.35;
    color: rgba(255, 255, 255, 0.92);
}

.bp-shop-type-card__badge {
    align-self: flex-start;
    margin-top: auto;
    padding: 5px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.94);
    color: #1d3f85;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

.bp-shop-type-card__badge--primary {
    color: #fff;
    background: linear-gradient(135deg, #d458a6 0%, #c53b8e 100%);
}

.bp-shop-type-card__badge--secondary {
    color: #fff;
    background: linear-gradient(135deg, #3f76cf 0%, #2857b0 100%);
}

.bp-shop-type-card.is-active {
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.22), 0 12px 24px rgba(15, 27, 54, 0.16);
}

.bp-shop-type-switch.is-active-mode .bp-shop-type-card:not(.is-active) .bp-shop-type-card__media {
    filter: grayscale(1);
}

.bp-shop-type-switch.is-active-mode .bp-shop-type-card:not(.is-active) .bp-shop-type-card__overlay {
    background: linear-gradient(120deg, rgba(16, 16, 16, 0.45) 0%, rgba(16, 16, 16, 0.78) 100%);
}

.bp-shop-type-card.is-disabled {
    cursor: default;
    pointer-events: none;
}

.bp-shop-type-card.is-disabled:hover {
    transform: none;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.22), 0 12px 24px rgba(15, 27, 54, 0.16);
}

.bp-shop-layout {
    display: grid;
    grid-template-columns: 284px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}

/* Inset the filter column so its controls aren't flush against the page edge. */
.bp-shop-layout__sidebar {
    box-sizing: border-box;
    padding: 4px 12px 4px 16px;
}

.bp-shop-page__toolbar {
    margin-bottom: 14px;
}

.bp-shop-page__toolbar .woocommerce-result-count,
.bp-shop-page__toolbar .woocommerce-ordering {
    margin-bottom: 12px;
    float: none;
}

.bp-shop-page__toolbar .woocommerce-ordering {
    margin-left: auto;
}

/* Prefixed with body.woocommerce so these outrank WooCommerce core's
   `.woocommerce ul.products[class*="columns-"] li.product` (0,4,2) rules,
   which set percentage widths/floats/margins that break the CSS grid.
   The archive markup has no `.woocommerce` wrapper inside `.bp-shop-page`,
   so the ancestor must be the body class Woo adds on shop pages. */
body.woocommerce .bp-shop-page ul.products {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-auto-rows: 1fr;
    gap: 18px;
    margin: 0;
    padding: 0;
}

body.woocommerce .bp-shop-layout__content ul.products {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

body.woocommerce .bp-shop-page ul.products::before,
body.woocommerce .bp-shop-page ul.products::after {
    display: none;
}

body.woocommerce .bp-shop-page ul.products li.product {
    width: auto;
    margin: 0;
    display: flex;
}

.bp-shop-page ul.products li.product > .bp-shop-card {
    flex: 1;
}

.bp-shop-card {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    border-radius: 16px;
    overflow: hidden;
    background: #ffffff;
    box-shadow: 0 8px 24px rgba(21, 32, 60, 0.12);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.bp-shop-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 28px rgba(21, 32, 60, 0.18);
}

.bp-shop-card__media {
    position: relative;
    display: block;
    width: 100%;
    padding-top: 64%;
    overflow: hidden;
    background: #e9edf6;
}

/* When there's no event-date row above, the media is the first child of
   the card. Grow its padding-top so the image absorbs the row that would
   otherwise sit there — keeps card bodies aligned across the grid.
   ~40px matches `.bp-shop-card__event-date` (14px + 8px padding + ~18px line). */
.bp-shop-card__media:first-child {
    padding-top: calc(64% + 40px);
}

.bp-shop-card__media img {
    position: absolute;
    inset: 0;
    /* WP outputs width/height HTML attrs and WooCommerce ships an
       `img { height: auto }` rule — without !important the img falls
       back to its intrinsic aspect ratio and leaves a grey strip at
       the bottom of the (now-taller) media container. */
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
    object-position: center center;
}

.bp-shop-card__event-date {
    padding: 14px 18px 8px;
    color: #1f2937;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    text-align: center;
}

.bp-shop-card__lesson-pill {
    position: absolute;
    top: 14px;
    right: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px 16px;
    border-radius: 999px;
    background: #2d5eb5;
    color: #ffffff;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
    box-shadow: 0 4px 12px rgba(21, 32, 60, 0.18);
}

.bp-shop-card__price-pill {
    position: absolute;
    right: 14px;
    bottom: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 18px;
    border-radius: 999px;
    background: #2d5eb5;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
    box-shadow: 0 4px 12px rgba(21, 32, 60, 0.18);
}

.bp-shop-card__price-pill .price,
.bp-shop-card__price-pill .amount,
.bp-shop-card__price-pill bdi {
    margin: 0;
    color: inherit;
    font: inherit;
    text-decoration: none;
}

.bp-shop-card__price-pill del {
    display: none;
}

.bp-shop-card__price-pill ins {
    text-decoration: none;
}

.bp-shop-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: 14px;
    padding: 18px 18px 20px;
}

.bp-shop-card__title {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.3;
    min-height: calc(2 * 1.3em);
}

.bp-shop-card__title a {
    color: #06080d;
    text-decoration: none;
}

.bp-shop-card__title a:hover {
    color: #2d5eb5;
}

.bp-shop-card__excerpt {
    margin: -4px 0 0;
    color: #06080d;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.4;
}

.bp-shop-card__details-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 40px;
    margin-top: auto;
    padding: 0 18px;
    border-radius: 999px;
    background: #2d5eb5;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    transition: background 0.15s ease;
}

.bp-shop-card__details-btn:hover,
.bp-shop-card__details-btn:focus {
    background: #244d98;
    color: #ffffff;
}

.bp-shop-page__pagination {
    margin-top: 22px;
}

.bp-shop-page .woocommerce nav.woocommerce-pagination ul {
    border: 0;
    display: inline-flex;
    gap: 8px;
}

.bp-shop-page .woocommerce nav.woocommerce-pagination ul li {
    border: 0;
}

.bp-shop-page .woocommerce nav.woocommerce-pagination ul li a,
.bp-shop-page .woocommerce nav.woocommerce-pagination ul li span {
    border-radius: 999px;
    min-width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 10px;
}

.bp-shop-page .woocommerce nav.woocommerce-pagination ul li span.current {
    background: #2f5fb8;
    color: #fff;
}

@media (max-width: 1199px) {
    .bp-shop-layout {
        grid-template-columns: 248px minmax(0, 1fr);
    }

    .bp-shop-layout__content ul.products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 991px) {
    .bp-shop-type-card__title {
        font-size: 22px;
    }

    .bp-shop-layout {
        grid-template-columns: 1fr;
    }

    .bp-shop-filters--sidebar {
        position: static;
    }

    .bp-shop-page ul.products,
    .bp-shop-layout__content ul.products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .bp-shop-page__title {
        font-size: 26px;
    }
}

@media (max-width: 575px) {
    .bp-shop-type-switch {
        grid-template-columns: 1fr;
    }

    .bp-shop-type-card {
        min-height: 120px;
    }

    .bp-shop-type-card__title {
        font-size: 20px;
    }

    .bp-shop-page ul.products,
    .bp-shop-layout__content ul.products {
        grid-template-columns: 1fr;
        gap: 14px;
    }

    .bp-shop-page__hero {
        padding: 16px;
        border-radius: 14px;
    }

    .bp-shop-page__title {
        font-size: 22px;
    }
}

.bp-shop-card__course-link {
    display: inline-flex;
    width: fit-content;
    font-size: 12px;
    font-weight: 600;
    color: #2d5eb5;
    text-decoration: underline;
    text-underline-offset: 2px;
}


.bp-shop-card__course-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 2px;
}

.bp-shop-card__course-meta--media {
    position: absolute;
    left: 10px;
    right: 10px;
    bottom: 10px;
    z-index: 2;
    margin-top: 0;
    pointer-events: none;
}

.bp-shop-card__course-meta .meta-item {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 3px 10px;
    border: 1px solid #d7e3ff;
    border-radius: 999px;
    background: #eef3ff;
    color: #1b3f88;
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
}

.bp-shop-card__course-meta .meta-item-duration {
    border-color: #d3eddf;
    background: #eef8f4;
    color: #1f6b4a;
}

.bp-shop-card__course-meta .meta-item-level {
    border-color: #ffd7ea;
    background: #fff2f8;
    color: #9a2f6b;
}

.bp-shop-card__course-meta .meta-item-lesson {
    border-color: #d7e3ff;
    background: #eef3ff;
    color: #1b3f88;
}

.bp-page-content {
    min-height: 1px;
}

.bp-instructors-section {
    padding: 0 0 24px;
}

.bp-instructors-section__header {
    max-width: 760px;
    margin-bottom: 24px;
}

.bp-instructors-section__eyebrow {
    display: inline-block;
    margin-bottom: 10px;
    color: #2d5eb5;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.bp-instructors-section__title {
    margin: 0 0 10px;
    color: #10141f;
    font-size: clamp(28px, 3vw, 40px);
    line-height: 1.1;
}

.bp-instructors-section__description {
    margin: 0;
    color: #5b6780;
    font-size: 15px;
    line-height: 1.6;
}

.bp-instructor-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
}

.bp-instructor-list--featured,
.bp-instructor-list--archive,
.bp-instructor-list--related {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}

.bp-instructor-list--course {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.bp-instructor-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    border: 1px solid rgba(33, 92, 181, 0.18);
    border-radius: 16px;
    overflow: hidden;
    background: #ffffff;
    box-shadow: 0 14px 28px rgba(8, 12, 24, 0.14);
}

.bp-instructor-card__link {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: inherit;
    text-decoration: none;
}

.bp-instructor-card__media {
    position: relative;
    min-height: 300px;
    background: linear-gradient(135deg, #f1f4fb 0%, #dfe7f7 100%);
}

.bp-instructor-card__media img,
.bp-instructor-card__placeholder {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.bp-instructor-card__media img {
    object-fit: cover;
    object-position: center top;
}

.bp-instructor-card__placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #2d5eb5;
    font-size: 42px;
    font-weight: 700;
}

.bp-instructor-card__body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    gap: 6px;
    padding: 14px 18px 16px;
}

.bp-instructor-card__role,
.bp-instructor-card__categories {
    color: #20283a;
    font-size: 13px;
    font-weight: 400;
    line-height: 1.35;
}

.bp-instructor-card__categories {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}

.bp-instructor-card__category {
    display: inline-flex;
    align-items: center;
    color: #20283a;
    font-size: 13px;
    line-height: 1.35;
}

.bp-instructor-card__category + .bp-instructor-card__category::before {
    content: "•";
    margin-right: 5px;
    color: #8d97aa;
}

.bp-instructor-card__title {
    margin: 0;
    color: #10141f;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.15;
}

.bp-instructor-card__excerpt {
    margin: 0;
    color: #5b6780;
    font-size: 14px;
    line-height: 1.6;
}

.bp-instructor-card__meta {
    margin-top: auto;
    padding-top: 6px;
    color: #1f6b4a;
    font-size: 12px;
    font-weight: 700;
}

.bp-instructor-card__tags {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    flex-wrap: wrap;
    min-height: 36px;
    padding: 10px 12px 9px;
    background: #ffffff;
}

.bp-instructor-card__tag,
.bp-instructor-single__tag {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.94);
    color: #10213f;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.2;
}

.bp-instructor-card__tag {
    border-radius: 0;
    background: transparent;
}

.bp-instructor-card__tag-separator {
    color: #10213f;
    font-size: 20px;
    font-weight: 400;
    line-height: 1;
}

.bp-instructor-card__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 34px;
    margin-top: 8px;
    padding: 7px 14px;
    border-radius: 999px;
    background: #d25ba8;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
}

.bp-instructors-archive {
    padding: 112px 0 56px;
}

.bp-instructors-archive__intro {
    max-width: 760px;
    margin-bottom: 24px;
}

.bp-instructors-archive__title {
    margin: 0;
    color: #10141f;
    font-size: clamp(34px, 4vw, 52px);
    line-height: 1.05;
}

.bp-instructor-single {
    padding: 120px 0 48px;
}

.bp-instructor-single__hero {
    display: grid;
    grid-template-columns: minmax(260px, 360px) minmax(0, 1fr);
    gap: 28px;
    align-items: start;
    margin-bottom: 32px;
}

.bp-instructor-single__media {
    overflow: hidden;
    border-radius: 24px;
    background: linear-gradient(135deg, #f1f4fb 0%, #dfe7f7 100%);
    box-shadow: 0 18px 40px rgba(15, 28, 63, 0.12);
}

.bp-instructor-single__media img,
.bp-instructor-single__placeholder {
    display: block;
    width: 100%;
}

.bp-instructor-single__media img {
    height: auto;
}

.bp-instructor-single__placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 420px;
    color: #2d5eb5;
    font-size: 72px;
    font-weight: 700;
}

.bp-instructor-single__content {
    padding-top: 10px;
}

.bp-instructor-single__title {
    margin: 0 0 12px;
    color: #10141f;
    font-size: clamp(32px, 4vw, 52px);
    line-height: 1.05;
}

.bp-instructor-single__intro {
    margin: 0 0 18px;
    color: #5b6780;
    font-size: 17px;
    line-height: 1.7;
}

.bp-instructor-single__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 18px;
}

.bp-instructor-single__tag {
    border: 1px solid #dce4f2;
    background: #f6f8fc;
}

.bp-instructor-single__categories {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 18px;
}

.bp-instructor-single__category {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 6px 12px;
    border-radius: 999px;
    background: #2d5eb5;
    color: #ffffff;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
}

.bp-instructor-single__body {
    color: #23304d;
    font-size: 15px;
    line-height: 1.8;
}

.bp-instructor-single__body > *:last-child {
    margin-bottom: 0;
}

.bp-instructor-single__courses {
    margin-top: 40px;
}

.bp-instructor-single__classes {
    margin-top: 40px;
}

.bp-instructor-single__others {
    margin-top: 48px;
}

.bp-instructor-single__section-header {
    margin-bottom: 18px;
}

.bp-instructor-single__courses-title {
    margin: 0 0 18px;
    color: #10141f;
    font-size: 28px;
}

.bp-courses-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
}

.bp-courses-list__item {
    border-radius: 18px;
    overflow: hidden;
    background: #ffffff;
    box-shadow: 0 12px 30px rgba(15, 28, 63, 0.09);
}

.bp-courses-list__link {
    display: flex;
    flex-direction: column;
    height: 100%;
    color: inherit;
    text-decoration: none;
}

.bp-courses-list__thumb {
    position: relative;
    padding-top: 62%;
    background: #edf1f8;
}

.bp-courses-list__thumb img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bp-courses-list__content {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    gap: 10px;
    padding: 18px;
}

.bp-courses-list__category {
    color: #2d5eb5;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.bp-courses-list__title {
    margin: 0;
    color: #10141f;
    font-size: 20px;
    line-height: 1.2;
}

.bp-courses-list__excerpt,
.bp-courses-list__empty {
    margin: 0;
    color: #5b6780;
    font-size: 14px;
    line-height: 1.6;
}

.bp-course-instructors-meta {
    display: flex;
    align-items: center;
    gap: 12px;
}

.bp-course-instructors-meta__avatars {
    display: flex;
    align-items: center;
    margin-right: 0;
}

.bp-course-instructors-meta__avatar,
.bp-course-instructors-meta__placeholder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    border: 2px solid #fff;
    border-radius: 999px;
    overflow: hidden;
    background: #e4ecfb;
    color: #2d5eb5;
    font-size: 16px;
    font-weight: 700;
}

.bp-course-instructors-meta__avatar + .bp-course-instructors-meta__avatar,
.bp-course-instructors-meta__avatar + .bp-course-instructors-meta__placeholder,
.bp-course-instructors-meta__placeholder + .bp-course-instructors-meta__avatar,
.bp-course-instructors-meta__placeholder + .bp-course-instructors-meta__placeholder {
    margin-left: -12px;
}

.bp-course-instructors-meta__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bp-course-instructors-meta__names {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 10px;
}

.bp-course-instructors-meta__name {
    color: inherit;
    font-weight: 600;
}

.bp-course-instructors-meta__separator {
    color: #8a94a9;
}

.bp-course-instructors-tab {
    padding-top: 18px;
}

.bp-instructor-bio {
    display: grid;
    grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
    gap: 24px;
    align-items: start;
    padding: 24px 0;
}

.bp-instructor-bio + .bp-instructor-bio {
    border-top: 1px solid #e6ebf5;
}

.bp-instructor-bio__media {
    overflow: hidden;
    border-radius: 22px;
    background: linear-gradient(135deg, #f1f4fb 0%, #dfe7f7 100%);
    box-shadow: 0 14px 32px rgba(15, 28, 63, 0.1);
}

.bp-instructor-bio__media img,
.bp-instructor-bio__placeholder {
    display: block;
    width: 100%;
}

.bp-instructor-bio__media img {
    height: auto;
}

.bp-instructor-bio__placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 280px;
    color: #2d5eb5;
    font-size: 52px;
    font-weight: 700;
}

.bp-instructor-bio__content {
    color: #23304d;
}

.bp-instructor-bio__eyebrow {
    display: inline-block;
    margin-bottom: 10px;
    color: #2d5eb5;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.bp-instructor-bio__title {
    margin: 0 0 12px;
    color: #10141f;
    font-size: 28px;
    line-height: 1.15;
}

.bp-instructor-bio__intro {
    margin: 0 0 16px;
    color: #5b6780;
    font-size: 16px;
    line-height: 1.7;
}

.bp-instructor-bio__description {
    color: #23304d;
    font-size: 15px;
    line-height: 1.8;
}

.bp-instructor-bio__description > *:last-child {
    margin-bottom: 0;
}

@media (max-width: 991px) {
    .bp-home-carousel-wrap {
        padding-top: 40px;
    }

    .bp-home-shop-switch {
        padding-bottom: 10px;
    }

    .bp-home-classes-featured,
    .bp-home-courses-featured,
    .bp-home-news-featured,
    .bp-home-instructors {
        padding-bottom: 22px;
    }

    .bp-home-classes-featured__content,
    .bp-home-courses-featured__content,
    .bp-home-news-featured__content,
    .bp-home-instructors__content {
        padding: 22px 0 18px;
    }

    .bp-home-classes-featured__header {
        flex-direction: column;
        align-items: flex-start;
    }

    .bp-home-courses-featured__header {
        grid-template-columns: 96px minmax(0, 1fr);
        gap: 18px;
        margin-bottom: 24px;
    }

    .bp-home-courses-featured__brand {
        min-height: 96px;
    }

    .bp-home-courses-featured__logo {
        width: 88px;
    }

    .bp-home-courses-featured__header-action {
        grid-column: 2 / 3;
        padding-left: 0;
    }

    .bp-news-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 18px;
    }

    .bp-news-page {
        padding-top: 96px;
    }

    .bp-post-single {
        padding-top: 96px;
    }

    .bp-home-contact {
        padding-bottom: 44px;
    }

    .bp-home-contact__content {
        padding-top: 28px;
    }

    .bp-home-contact__header {
        margin-bottom: 30px;
    }

    .bp-home-contact__grid {
        grid-template-columns: 1fr;
    }

    .bp-home-contact__form-card {
        padding: 32px;
    }

    .bp-home-contact__details {
        padding: 24px 32px 28px;
    }

    .bp-instructor-list,
    .bp-instructor-list--featured,
    .bp-instructor-list--archive,
    .bp-instructor-list--related,
    .bp-courses-list,
    .bp-instructor-list--course {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .bp-instructor-single__hero {
        grid-template-columns: 1fr;
    }

    .bp-instructor-bio {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 575px) {
    .bp-home-carousel-wrap {
        padding-top: 32px;
        padding-bottom: 14px;
    }

    .bp-home-shop-switch {
        padding-bottom: 8px;
    }

    .bp-home-classes-featured,
    .bp-home-courses-featured,
    .bp-home-news-featured,
    .bp-home-instructors {
        padding-bottom: 16px;
    }

    .bp-home-classes-featured__content,
    .bp-home-courses-featured__content,
    .bp-home-news-featured__content,
    .bp-home-instructors__content {
        padding: 16px 0 14px;
    }

    .bp-feature-gallery {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
    }

    .bp-feature-gallery__item--1,
    .bp-feature-gallery__item--2,
    .bp-feature-gallery__item--3 {
        grid-column: 1 / 2;
        grid-row: auto;
    }

    .bp-home-classes-featured__title,
    .bp-home-courses-featured__title,
    .bp-home-news-featured__title,
    .bp-news-page__title,
    .bp-home-instructors__title {
        font-size: 24px;
    }

    .bp-home-courses-featured__header {
        grid-template-columns: 1fr;
        gap: 12px;
        text-align: center;
    }

    .bp-home-courses-featured__brand {
        min-height: 0;
    }

    .bp-home-courses-featured__logo {
        width: 82px;
    }

    .bp-home-courses-featured__description {
        max-width: none;
    }

    .bp-home-courses-featured__header-action {
        grid-column: auto;
        justify-self: center;
    }

    .bp-news-grid {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .bp-news-card__body {
        padding: 16px;
    }

    .bp-news-page {
        padding-top: 84px;
        padding-bottom: 44px;
    }

    .bp-post-single {
        padding-top: 84px;
        padding-bottom: 44px;
    }

    .bp-post-single__meta {
        font-size: 10px;
    }

    .bp-post-single__media {
        margin-bottom: 28px;
    }

    .bp-post-single__content {
        font-size: 14px;
    }

    .bp-home-contact {
        padding-bottom: 32px;
    }

    .bp-home-contact__title {
        font-size: 24px;
    }

    .bp-home-contact__description {
        font-size: 13px;
    }

    .bp-home-contact__card {
        border-radius: 18px;
    }

    .bp-home-contact__form-card {
        padding: 22px 20px 24px;
    }

    .bp-home-contact__location-card .bp-home-contact__card-title {
        padding: 22px 20px 0;
    }

    .bp-home-contact__card-title {
        font-size: 20px;
        margin-bottom: 14px;
    }

    .bp-home-contact__map {
        margin: 0 16px;
    }

    .bp-home-contact__details {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 18px 20px 22px;
    }

    .bp-home-contact__logo {
        width: 132px;
    }

    .bp-home-contact__address,
    .bp-home-contact__phone {
        font-size: 15px;
    }

    .bp-instructor-list,
    .bp-instructor-list--featured,
    .bp-instructor-list--archive,
    .bp-instructor-list--related,
    .bp-courses-list,
    .bp-instructor-list--course {
        grid-template-columns: 1fr;
    }

    .bp-instructor-single {
        padding-top: 96px;
    }

    .bp-instructors-archive {
        padding-top: 28px;
    }

    .bp-instructor-card__media {
        min-height: 300px;
    }

    .bp-instructor-card__body,
    .bp-courses-list__content {
        padding: 16px;
    }

    .bp-instructors-section__title,
    .bp-instructor-single__courses-title {
        font-size: 24px;
    }
}

.bp-home-newsletter {
    padding: 0 0 28px;
    background: #f4f4f5;
}

.bp-home-newsletter__card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 32px;
    align-items: center;
    padding: 36px 48px;
    border-radius: 28px;
    background: #2d5eb5;
    box-shadow: 0 12px 32px rgba(21, 32, 60, 0.08);
}

.bp-home-newsletter__content {
    min-width: 0;
}

.bp-home-newsletter__title {
    margin: 0 0 8px;
    color: #ffffff;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-home-newsletter__description {
    margin: 0;
    color: rgba(255, 255, 255, 0.85);
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-home-newsletter__form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin: 0;
    transform: translateY(20px);
}

.bp-home-newsletter__field {
    flex: 1 1 220px;
    min-width: 0;
    margin: 0;
}

.bp-home-newsletter__input {
    width: 100%;
    height: 44px;
    padding: 0 22px;
    border: 0;
    border-radius: 999px;
    background: #ffffff;
    color: #06080d;
    font-size: 14px;
    line-height: 44px;
    outline: none;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}

.bp-home-newsletter__input::placeholder {
    color: #6b7280;
}

.bp-home-newsletter__input:focus {
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.35);
}

.bp-home-newsletter__submit {
    flex: 0 0 auto;
    height: 44px;
    padding: 0 26px;
    border: 0;
    border-radius: 999px;
    background: #ffffff;
    color: #2d5eb5;
    font-size: 14px;
    font-weight: 700;
    line-height: 44px;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
}

.bp-home-newsletter__submit:hover,
.bp-home-newsletter__submit:focus {
    background: #f1f5ff;
}

.bp-home-newsletter__form.is-loading .bp-home-newsletter__submit {
    opacity: 0.7;
    cursor: progress;
}

.bp-home-newsletter__submit:disabled {
    cursor: not-allowed;
}

.bp-home-newsletter__message {
    flex: 1 0 100%;
    margin: 4px 0 0;
    min-height: 18px;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.85);
}

.bp-home-newsletter__message.is-success {
    color: #d6f5d6;
}

.bp-home-newsletter__message.is-error {
    color: #ffd5d5;
}

@media (max-width: 991px) {
    .bp-home-newsletter__card {
        grid-template-columns: 1fr;
        gap: 20px;
        padding: 28px 28px;
    }

    .bp-home-newsletter__form {
        transform: none;
    }
}

@media (max-width: 575px) {
    .bp-home-newsletter__card {
        padding: 24px 20px;
        border-radius: 22px;
    }

    .bp-home-newsletter__form {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
    }

    .bp-home-newsletter__field,
    .bp-home-newsletter__submit {
        width: 100%;
        flex: 1 1 auto;
    }

    .bp-home-newsletter__submit {
        padding: 0 24px;
    }
}

/* Sticky footer: keep the footer at the bottom of the viewport on short
   pages (empty cart, 404, thin account tabs) instead of leaving a white gap
   below it. Body is a min-height flex column and the footer's auto top
   margin soaks up any spare height above it. The footer is a direct child of
   <body> (header.php opens no persistent wrapper), so this targets it. */
body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.bp-footer {
    background: #000000;
    color: #d1d5db;
    padding: 56px 0 0;
    margin-top: auto;
}

.bp-footer__grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr 1.3fr;
    gap: 48px;
    padding-bottom: 56px;
}

.bp-footer__col {
    min-width: 0;
}

.bp-footer__logo {
    display: inline-block;
    margin-bottom: 22px;
}

.bp-footer__logo img {
    display: block;
    width: 130px;
    height: auto;
}

.bp-footer__contact {
    display: flex;
    flex-direction: column;
    gap: 6px;
    color: #d1d5db;
    font-size: 13px;
    line-height: 1.55;
}

.bp-footer__address {
    margin: 0;
    font-style: normal;
}

.bp-footer__phone {
    color: #d1d5db;
    text-decoration: none;
}

.bp-footer__phone:hover {
    color: #ffffff;
}

.bp-footer__heading {
    margin: 0 0 18px;
    color: #ffffff;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.bp-footer__nav {
    display: block;
}

.bp-footer__menu {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.bp-footer__menu li {
    margin: 0;
}

.bp-footer__menu a {
    color: #d1d5db;
    font-size: 13px;
    line-height: 1.5;
    text-decoration: none;
    transition: color 0.15s ease;
}

.bp-footer__menu a:hover,
.bp-footer__menu .current-menu-item > a {
    color: #ffffff;
}

.bp-footer__newsletter-description {
    margin: 0 0 16px;
    color: #d1d5db;
    font-size: 13px;
    line-height: 1.55;
}

.bp-footer__newsletter-form {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 0;
    max-width: 340px;
}

.bp-footer__newsletter-field {
    display: block;
    margin: 0;
}

.bp-footer__newsletter-input {
    width: 100%;
    height: 40px;
    padding: 0 20px;
    border: 0;
    border-radius: 999px;
    background: #ffffff;
    color: #06080d;
    font-size: 13px;
    line-height: 40px;
    outline: none;
}

.bp-footer__newsletter-input::placeholder {
    color: #6b7280;
}

.bp-footer__newsletter-input:focus {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.35);
}

.bp-footer__newsletter-submit {
    align-self: flex-start;
    height: 36px;
    padding: 0 26px;
    border: 0;
    border-radius: 999px;
    background: #d96fa2;
    color: #ffffff;
    font-size: 13px;
    font-weight: 600;
    line-height: 36px;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-footer__newsletter-submit:hover,
.bp-footer__newsletter-submit:focus {
    background: #c95c91;
}

.bp-footer__newsletter-form.is-loading .bp-footer__newsletter-submit {
    opacity: 0.7;
    cursor: progress;
}

.bp-footer__newsletter-submit:disabled {
    cursor: not-allowed;
}

.bp-footer__newsletter-message {
    margin: 4px 0 0;
    min-height: 16px;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.7);
}

.bp-footer__newsletter-message.is-success {
    color: #b9efc4;
}

.bp-footer__newsletter-message.is-error {
    color: #ffc8c8;
}

.bp-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 22px 0;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.bp-footer__copy {
    margin: 0;
    color: #9ca3af;
    font-size: 12px;
}

.bp-footer__legal {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    margin: 0;
    padding: 0;
}

.bp-footer__legal a {
    color: #9ca3af;
    font-size: 12px;
    text-decoration: none;
    transition: color 0.15s ease;
}

.bp-footer__legal a:hover {
    color: #ffffff;
}

@media (max-width: 991px) {
    .bp-footer__grid {
        grid-template-columns: 1fr 1fr;
        gap: 36px;
    }

    .bp-footer__col--newsletter {
        grid-column: 1 / -1;
    }
}

@media (max-width: 575px) {
    .bp-footer {
        padding-top: 40px;
    }

    .bp-footer__grid {
        grid-template-columns: 1fr;
        gap: 28px;
        padding-bottom: 36px;
    }

    .bp-footer__bottom {
        flex-direction: column;
        align-items: flex-start;
    }
}

.bp-topbar {
    background: #2d5eb5;
    padding: 10px 0;
}

.bp-topbar__text {
    margin: 0;
    color: #ffffff;
    font-size: 13px;
    font-weight: 500;
    text-align: center;
    line-height: 1.4;
}

.bp-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background: #000000;
    color: #ffffff;
}

.bp-header__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 14px 0;
}

.bp-header__brand {
    display: flex;
    align-items: center;
    gap: 18px;
    min-width: 0;
}

.bp-header__logo {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
}

.bp-header__logo img {
    display: block;
    height: 50px;
    width: auto;
}

.bp-header__partner {
    position: relative;
    padding-left: 18px;
    color: #d1d5db;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1.3;
}

.bp-header__partner::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    width: 1px;
    height: 22px;
    background: rgba(255, 255, 255, 0.2);
    transform: translateY(-50%);
}

.bp-header__actions {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}

.bp-header__lang {
    display: inline-flex;
    align-items: center;
    list-style: none;
    margin: 0;
    padding: 4px 6px;
    border-radius: 999px;
    background: #2a2d33;
    gap: 2px;
}

.bp-header__lang li {
    margin: 0;
    display: inline-flex;
}

.bp-header__lang-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    padding: 4px 10px;
    border-radius: 999px;
    color: rgba(255, 255, 255, 0.65);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-decoration: none;
    line-height: 1;
    transition: color 0.15s ease, background 0.15s ease;
}

.bp-header__lang-link.is-current {
    background: rgba(255, 255, 255, 0.1);
    color: #ffffff;
}

.bp-header__lang-link:hover:not(.is-current) {
    color: #ffffff;
}

.bp-header__cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 36px;
    padding: 0 18px;
    border-radius: 999px;
    color: #ffffff;
    font-size: 12px;
    font-weight: 700;
    text-decoration: none;
    line-height: 1;
    white-space: nowrap;
    transition: background 0.15s ease;
}

.bp-header__cta--booking {
    background: #d96fa2;
}

.bp-header__cta--booking:hover,
a.bp-header__cta--booking:hover {
    background: #c95c91;
    /* `!important` here to beat the generic `a:hover` rule shipped with
     * `additional.css` (the parent-theme bundle), which uses `!important`
     * on its hover color and would otherwise win regardless of our
     * specificity. */
    color: #ffffff !important;
}

.bp-header__cta--courses {
    background: #2d5eb5;
}

.bp-header__cta--courses:hover {
    background: #244d98;
    color: #ffffff;
}

.bp-header__icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: #ffffff;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-header__icon-btn:hover,
.bp-header__icon-btn:focus {
    background: rgba(255, 255, 255, 0.1);
    color: #ffffff;
}

/* Cart icon — only rendered when WC()->cart has items. The wrapper span
 * is always in the DOM (empty when count is 0) so WC's cart fragments
 * filter can swap its content during AJAX add-to-cart. */
.bp-header__cart-wrap {
    display: inline-flex;
    align-items: center;
}

.bp-header__cart {
    position: relative;
    text-decoration: none;
}

.bp-header__cart-count {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: #d96fa2;
    color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    box-shadow: 0 2px 4px rgba(217, 111, 162, 0.4);
}

.bp-drawer-scrim {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 200;
    cursor: pointer;
}

.bp-drawer-scrim.is-open {
    opacity: 1;
}

.bp-drawer {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(480px, 100%);
    background: #1a1c20;
    color: #ffffff;
    z-index: 201;
    transform: translateX(100%);
    transition: transform 0.3s ease;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.bp-drawer.is-open {
    transform: translateX(0);
}

.bp-drawer__inner {
    display: flex;
    flex-direction: column;
    min-height: 100%;
    padding: 24px 32px 48px;
}

.bp-drawer__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 32px;
    padding-bottom: 8px;
}

.bp-drawer__logo {
    display: inline-flex;
    align-items: center;
    margin: 0 auto;
}

.bp-drawer__logo img {
    display: block;
    height: 56px;
    width: auto;
}

.bp-drawer__close {
    position: absolute;
    top: 20px;
    right: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: #ffffff;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-drawer__close:hover,
.bp-drawer__close:focus {
    background: rgba(255, 255, 255, 0.1);
}

.bp-drawer__nav {
    margin-top: 24px;
}

.bp-drawer__menu {
    list-style: none;
    margin: 0;
    padding: 0;
}

.bp-drawer__menu li {
    margin: 0;
    position: relative;
}

.bp-drawer__menu > li {
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.bp-drawer__menu > li:last-child {
    border-bottom: 0;
}

.bp-drawer__menu a {
    display: inline-block;
    padding: 12px 48px 12px 0;
    color: #ffffff;
    font-size: 16px;
    font-weight: 600;
    text-decoration: none;
    line-height: 1.3;
    transition: color 0.15s ease;
}

.bp-drawer__menu a:hover {
    color: #d96fa2;
}

.bp-drawer__menu .sub-menu {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease, padding 0.3s ease;
}

.bp-drawer__menu .menu-item-has-children.is-open > .sub-menu {
    max-height: 800px;
    padding-bottom: 8px;
}

.bp-drawer__menu .sub-menu a {
    padding: 6px 0 6px 18px;
    font-size: 13px;
    font-weight: 500;
    color: #d1d5db;
}

.bp-drawer__menu .sub-menu a:hover {
    color: #ffffff;
}

.bp-drawer__submenu-toggle {
    position: absolute;
    top: 8px;
    right: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: #ffffff;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.2s ease;
}

.bp-drawer__submenu-toggle:hover,
.bp-drawer__submenu-toggle:focus {
    background: rgba(255, 255, 255, 0.1);
}

.bp-drawer__has-children.is-open > .bp-drawer__submenu-toggle {
    transform: rotate(180deg);
}

body.bp-drawer-open {
    overflow: hidden;
}

@media (max-width: 991px) {
    .bp-header__partner {
        display: none;
    }

    .bp-header__cta--booking,
    .bp-header__cta--courses {
        height: 34px;
        padding: 0 14px;
        font-size: 11px;
    }

    .bp-header__lang {
        display: none;
    }
}

@media (max-width: 767px) {
    .bp-header__cta--courses {
        display: none;
    }

    .bp-header__cta--booking {
        padding: 0 12px;
    }
}

@media (max-width: 575px) {
    .bp-header__bar {
        gap: 10px;
        padding: 12px 0;
    }

    .bp-header__logo img {
        height: 28px;
    }

    .bp-header__cta--booking {
        display: none;
    }

    .bp-header__actions {
        gap: 6px;
    }

    .bp-drawer__inner {
        padding: 20px 24px 40px;
    }

    .bp-drawer__menu a {
        font-size: 15px;
    }

    .bp-drawer__menu .sub-menu a {
        font-size: 12px;
    }
}

.bp-courses-by-category {
    padding: 32px 0 56px;
    background: #f4f4f5;
}

.bp-courses-by-category__block {
    padding: 24px 0 32px;
}

.bp-courses-by-category__block + .bp-courses-by-category__block {
    padding-top: 16px;
}

.bp-courses-by-category__header {
    max-width: 760px;
    margin-bottom: 22px;
}

.bp-courses-by-category__title {
    margin: 0 0 6px;
    color: #06080d;
    font-size: clamp(20px, 1.9vw, 28px);
    font-weight: 700;
    line-height: 1.15;
}

.bp-courses-by-category__description {
    margin: 0;
    max-width: 720px;
    color: #1f2937;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-courses-by-category__products .products {
    margin: 0;
    padding: 0;
    list-style: none;
}

.bp-courses-by-category__products .products::before,
.bp-courses-by-category__products .products::after {
    content: none;
}

@media (max-width: 991px) {
    .bp-courses-by-category {
        padding: 24px 0 40px;
    }

    .bp-courses-by-category__block {
        padding: 18px 0 24px;
    }
}

@media (max-width: 575px) {
    .bp-courses-by-category__title {
        font-size: 20px;
    }
}

.bp-classes-list {
    padding: 32px 0 56px;
    background: #f4f4f5;
}

.bp-classes-list__header {
    max-width: 720px;
    margin-bottom: 28px;
}

.bp-classes-list__title {
    margin: 0 0 8px;
    color: #06080d;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-classes-list__description {
    margin: 0;
    max-width: 720px;
    color: #1f2937;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-classes-list__products .products {
    margin: 0;
    padding: 0;
    list-style: none;
}

.bp-classes-list__products .products::before,
.bp-classes-list__products .products::after {
    content: none;
}

.bp-classes-list__footer {
    margin-top: 32px;
    display: flex;
    justify-content: center;
}

.bp-classes-list__load-more {
    min-width: 220px;
}

.bp-classes-list__load-more.is-loading {
    opacity: 0.7;
    cursor: progress;
}

@media (max-width: 991px) {
    .bp-classes-list {
        padding: 24px 0 40px;
    }
}

.bp-passes {
    padding: 40px 0 64px;
    background: #f4f4f5;
}

.bp-passes__header {
    max-width: 720px;
    margin-bottom: 32px;
}

.bp-passes__title {
    margin: 0 0 8px;
    color: #06080d;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-passes__description {
    margin: 0;
    max-width: 720px;
    color: #1f2937;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-passes__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
    align-items: start;
    list-style: none;
    margin: 0;
    padding: 0;
}

.bp-pass-card {
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: 18px;
    background: #2d5eb5;
    color: #ffffff;
    box-shadow: 0 14px 32px rgba(21, 32, 60, 0.14);
}

.bp-pass-card__ribbon {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    padding: 0 12px;
    background: #d96fa2;
    color: #ffffff;
    text-align: center;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.14em;
    line-height: 1;
}

.bp-passes--has-popular .bp-pass-card:not(.bp-pass-card--popular) {
    margin-top: 40px;
}

.bp-pass-card__inner {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 20px 22px 18px;
    gap: 10px;
    text-align: left;
}

.bp-pass-card__top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 6px;
}

.bp-pass-card__icon {
    color: #ffffff;
    line-height: 0;
}

.bp-pass-card__icon svg {
    width: 56px;
    height: 56px;
}

.bp-pass-card__price {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px;
    border-radius: 999px;
    background: #ffffff;
    color: #1d2746;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.bp-pass-card__price .price,
.bp-pass-card__price .amount,
.bp-pass-card__price bdi,
.bp-pass-card__price ins {
    margin: 0;
    color: inherit;
    font: inherit;
    text-decoration: none;
}

.bp-pass-card__price del {
    display: none;
}

.bp-pass-card__discount {
    margin: 0;
    color: #ffffff;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.2;
}

/* Session label is a full-bleed pink ribbon — matches the design across all
 * passes (popular or not). Negative side margins make it stretch edge to
 * edge of the rounded card. */
.bp-pass-card__session {
    margin: 4px -22px 6px;
    padding: 10px 18px;
    background: #d96fa2;
    color: #ffffff;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.01em;
    text-align: left;
}

.bp-pass-card__features {
    list-style: none;
    margin: 4px 0 14px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.bp-pass-card__features li {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    color: #ffffff;
    font-size: 13px;
    line-height: 1.4;
}

.bp-pass-card__check {
    flex-shrink: 0;
    margin-top: 2px;
    color: #2bd1c1;
}

.bp-pass-card__cta {
    align-self: stretch;
    margin-top: auto;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 38px;
    padding: 0 22px;
    border-radius: 999px;
    background: #d96fa2;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
    transition: background 0.15s ease;
}

.bp-pass-card__cta:hover,
.bp-pass-card__cta:focus,
a.bp-pass-card__cta:hover,
a.bp-pass-card__cta:focus {
    background: #c95c91;
    /* `!important` beats the generic `a:hover` rule in the parent-theme
     * `additional.css` bundle (which uses `!important` on its hover colour) —
     * same reason as `.bp-header__cta--booking:hover` above. */
    color: #ffffff !important;
    text-decoration: none !important;
}

@media (max-width: 991px) {
    .bp-passes__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 16px;
    }

    .bp-passes--has-popular .bp-pass-card:not(.bp-pass-card--popular) {
        margin-top: 0;
    }
}

@media (max-width: 575px) {
    .bp-passes__grid {
        grid-template-columns: 1fr;
    }

    .bp-pass-card__inner {
        padding: 22px 22px 20px;
    }

    .bp-pass-card__session {
        margin-left: -22px;
        margin-right: -22px;
    }
}

.bp-shop-page__empty {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 8px;
    padding: 56px 32px;
    border-radius: 18px;
    background: #ffffff;
    box-shadow: 0 8px 24px rgba(21, 32, 60, 0.06);
    min-height: 240px;
}

.bp-shop-page__empty-title {
    margin: 0;
    color: #06080d;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.3;
}

.bp-shop-page__empty-hint {
    margin: 0;
    color: #5b6780;
    font-size: 14px;
    line-height: 1.5;
}

.lp-course-curriculum .course-section .course-item.is-current {
    position: relative;
    background: #2d5eb5;
}

.lp-course-curriculum .course-section .course-item.is-current > .course-item__link {
    color: #ffffff;
}

.lp-course-curriculum .course-section .course-item.is-current .course-item-title {
    color: #ffffff;
    font-weight: 700;
}

.lp-course-curriculum .course-section .course-item.is-current .course-item-ico {
    color: #ffffff;
}

.lp-course-curriculum .course-section .course-item.is-current::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: #d96fa2;
}

.bp-course-requirements {
    padding: 32px 0;
}

.bp-course-requirements__header {
    max-width: 760px;
    margin-bottom: 28px;
}

.bp-course-requirements__title {
    margin: 0 0 12px;
    color: #06080d;
    font-size: clamp(24px, 2.2vw, 32px);
    font-weight: 700;
    line-height: 1.1;
}

.bp-course-requirements__intro {
    margin: 0;
    max-width: 720px;
    color: #1f2937;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

.bp-course-requirements__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px 24px;
    list-style: none;
    margin: 0;
    padding: 0;
    align-items: stretch;
}

.bp-course-requirement-card {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    padding: 22px 24px;
    border-radius: 18px;
    background: #e9eaee;
    color: #06080d;
}

.bp-course-requirement-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #1f2937;
    line-height: 0;
    flex-shrink: 0;
}

.bp-course-requirement-card__icon svg {
    width: 48px;
    height: 48px;
    display: block;
    color: #000000;
}

.bp-course-requirement-card--no-icon {
    grid-template-columns: minmax(0, 1fr);
}

.bp-course-requirement-card__body {
    min-width: 0;
}

.bp-course-requirement-card__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 6px;
    flex-wrap: wrap;
}

.bp-course-requirement-card__title {
    margin: 0;
    color: #06080d;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.2;
}

.bp-course-requirement-card__pill {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px;
    border-radius: 999px;
    background: #d96fa2;
    color: #ffffff;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
}

.bp-course-requirement-card__description {
    margin: 0;
    color: #1f2937;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.5;
}

@media (max-width: 767px) {
    .bp-course-requirements__grid {
        grid-template-columns: 1fr;
    }

    .bp-course-requirement-card {
        grid-template-columns: 48px minmax(0, 1fr);
        gap: 14px;
        padding: 18px 18px;
    }

    .bp-course-requirement-card__icon svg {
        width: 40px;
        height: 40px;
    }

    .bp-course-requirement-card__title {
        font-size: 16px;
    }
}

.bp-login-modal {
    position: fixed;
    inset: 0;
    z-index: 300;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.bp-login-modal.is-open {
    opacity: 1;
    pointer-events: auto;
}

.bp-login-modal__scrim {
    position: absolute;
    inset: 0;
    background: rgba(8, 10, 14, 0.55);
    cursor: pointer;
}

.bp-login-modal__dialog {
    position: relative;
    width: 100%;
    max-width: 420px;
    padding: 36px 32px 28px;
    border-radius: 22px;
    background: #2d5eb5;
    color: #ffffff;
    box-shadow: 0 18px 48px rgba(8, 10, 14, 0.35);
    transform: translateY(12px);
    transition: transform 0.2s ease;
}

.bp-login-modal.is-open .bp-login-modal__dialog {
    transform: translateY(0);
}

.bp-login-modal__close {
    position: absolute;
    top: 14px;
    right: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.1);
    color: #ffffff;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-login-modal__close:hover,
.bp-login-modal__close:focus {
    background: rgba(255, 255, 255, 0.2);
}

.bp-login-modal__brand {
    text-align: center;
    margin-bottom: 18px;
}

.bp-login-modal__logo {
    display: inline-block;
    width: 130px;
    max-width: 60%;
    height: auto;
}

.bp-login-modal__title {
    margin: 0 0 22px;
    color: #ffffff;
    font-size: 22px;
    font-weight: 700;
    text-align: center;
    line-height: 1.2;
}

.bp-login-modal__form {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin: 0;
}

.bp-login-modal__field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0;
}

.bp-login-modal__field-label {
    color: rgba(255, 255, 255, 0.85);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.bp-login-modal__field input[type="text"],
.bp-login-modal__field input[type="password"] {
    width: 100%;
    height: 40px;
    padding: 0 16px;
    border: 0;
    border-radius: 999px;
    background: #ffffff;
    color: #06080d;
    font-size: 13px;
    line-height: 40px;
    outline: none;
}

.bp-login-modal__field input::placeholder {
    color: #9ca3af;
}

.bp-login-modal__field input:focus {
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.35);
}

.bp-login-modal__checkbox {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: rgba(255, 255, 255, 0.85);
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
}

.bp-login-modal__checkbox input[type="checkbox"] {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: #d96fa2;
    cursor: pointer;
}

.bp-login-modal__error {
    margin: 0;
    padding: 10px 14px;
    border-radius: 10px;
    background: rgba(255, 80, 80, 0.18);
    color: #ffd5d5;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.4;
}

.bp-login-modal__submit {
    height: 42px;
    margin-top: 4px;
    padding: 0 22px;
    border: 0;
    border-radius: 999px;
    background: #d96fa2;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s ease, opacity 0.15s ease;
}

.bp-login-modal__submit:hover,
.bp-login-modal__submit:focus {
    background: #c95c91;
}

.bp-login-modal__submit:disabled,
.bp-login-modal__submit.is-loading {
    opacity: 0.7;
    cursor: progress;
}

.bp-login-modal__footer-links {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    margin-top: 6px;
    color: rgba(255, 255, 255, 0.75);
    font-size: 12px;
    font-weight: 600;
}

.bp-login-modal__footer-links a {
    color: rgba(255, 255, 255, 0.95);
    text-decoration: underline;
    text-decoration-color: rgba(255, 255, 255, 0.4);
    text-underline-offset: 3px;
}

.bp-login-modal__footer-links a:hover,
.bp-login-modal__footer-links a:focus {
    color: #ffffff;
    text-decoration-color: currentColor;
}

.bp-login-modal__divider {
    opacity: 0.5;
}

body.bp-modal-open {
    overflow: hidden;
}

@media (max-width: 575px) {
    .bp-login-modal {
        padding: 16px;
    }

    .bp-login-modal__dialog {
        padding: 28px 22px 24px;
    }

    .bp-login-modal__title {
        font-size: 19px;
        margin-bottom: 18px;
    }
}

.bp-shop-product-detail {
    padding: 0px 0 64px;
}

.bp-shop-product-detail__hero {
    position: relative;
    padding: 40px 0 56px;
    overflow: hidden;
    background-color: #101728;
    background-image:
        linear-gradient(180deg, #141a2e 0%, #0e1322 100%),
        var(--bp-product-hero-bg, none);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.bp-shop-product-detail__hero .container {
    position: relative;
    z-index: 1;
}

/* Media + card sit as two equal-height columns of the hero grid. */
.bp-shop-product-detail__hero .row {
    align-items: stretch;
}

.bp-shop-product-detail__media {
    position: relative;
    overflow: hidden;
    border-radius: 22px;
    height: 100%;
    min-height: 520px;
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 30px 70px -30px rgba(0, 0, 0, 0.7);
}

/* Fill the media box regardless of any global `img { height: auto }` rule
 * (WooCommerce / theme resets set that, which would leave a grey gap under a
 * short source image). Absolute positioning + object-fit guarantees cover. */
.bp-shop-product-detail__media img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center;
}

/* Booking card — white surface on the dark hero. */
.bp-shop-product-detail__card {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 34px;
    border-radius: 22px;
    background: #ffffff;
    color: #16181d;
    box-shadow: 0 30px 70px -30px rgba(0, 0, 0, 0.6);
}

.bp-shop-product-detail__title {
    margin: 16px 0 14px;
    color: #16181d;
    font-size: clamp(26px, 2.6vw, 34px);
    font-weight: 800;
    line-height: 1.12;
    letter-spacing: -0.8px;
}

.bp-shop-product-detail__excerpt {
    color: #565b66;
    font-size: 15px;
    font-weight: 400;
    line-height: 1.6;
}

.bp-shop-product-detail__excerpt p {
    margin: 0 0 10px;
}

.bp-shop-product-detail__excerpt p:last-child {
    margin-bottom: 0;
}

/* Key-facts grid (up to 3 tiles derived from requirement cards). */
.bp-shop-product-detail__facts {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-top: 22px;
}

.bp-shop-product-detail__fact {
    padding: 13px 14px;
    border-radius: 14px;
    background: #f6f7f9;
}

.bp-shop-product-detail__fact-label {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-bottom: 6px;
    color: #9aa0ac;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    line-height: 1.2;
}

.bp-shop-product-detail__fact-icon {
    display: inline-flex;
    flex: 0 0 auto;
    color: #9aa0ac;
}

.bp-shop-product-detail__fact-icon svg {
    width: 15px;
    height: 15px;
    display: block;
}

.bp-shop-product-detail__fact-value {
    color: #23262e;
    font-size: 14.5px;
    font-weight: 600;
    line-height: 1.25;
}

/* Push price + CTA to the bottom of the equal-height card. */
.bp-shop-product-detail__card-foot {
    margin-top: auto;
    padding-top: 22px;
}

/* Price + "sessions on your pass" chip row. */
.bp-shop-product-detail__pricebar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 16px;
    padding: 16px 18px;
    border: 1px solid #f4dde9;
    border-radius: 16px;
    background: #fbf1f6;
}

.bp-shop-product-detail__price {
    display: inline-flex;
    align-items: baseline;
    color: #16181d;
    font-size: 28px;
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -0.5px;
}

.bp-shop-product-detail__price .price,
.bp-shop-product-detail__price .amount,
.bp-shop-product-detail__price bdi {
    color: inherit;
    font: inherit;
    text-decoration: none;
}

.bp-shop-product-detail__price del {
    opacity: 0.6;
    margin-right: 8px;
    font-size: 18px;
    font-weight: 500;
}

.bp-shop-product-detail__price ins {
    text-decoration: none;
}

.bp-shop-product-detail__pass-chip {
    display: flex;
    align-items: center;
    gap: 9px;
    max-width: 200px;
    padding: 9px 13px;
    border: 1px solid #f0d7e4;
    border-radius: 12px;
    background: #ffffff;
    color: #7d5266;
    font-size: 12.5px;
    font-weight: 500;
    line-height: 1.3;
}

.bp-shop-product-detail__pass-chip svg {
    flex: 0 0 auto;
    color: #d3699a;
}

.bp-shop-product-detail__pass-chip b {
    color: #d3699a;
    font-weight: 700;
}

.bp-shop-product-detail__cancel-note {
    margin: 11px 0 0;
    text-align: center;
    color: #9aa0ac;
    font-size: 12.5px;
    line-height: 1.4;
}

.bp-shop-product-detail__cart {
    margin: 0;
}

.bp-shop-product-detail__cart .cart {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin: 0;
}

/* The info card / hibrid picker is rendered inside the cart form via the
 * `woocommerce_before_add_to_cart_button` hook, which means it inherits
 * the flex layout above. Force a 100% flex-basis so it takes the full
 * width of the col-6 and breaks before the quantity+button row. */
.bp-shop-product-detail__cart .cart > .bp-course-in-person,
.bp-shop-product-detail__cart .cart > .bp-course-picker {
    flex: 1 1 100%;
    width: 100%;
    max-width: 100%;
    margin: 0 0 16px;
}

.bp-shop-product-detail__cart .quantity input[type="number"] {
    height: 48px;
    width: 84px;
    padding: 0 12px;
    border: 1px solid #e3e6ec;
    border-radius: 12px;
    background: #f6f7f9;
    color: #16181d;
    font-size: 14px;
    text-align: center;
}

/* Primary CTA — full-width pink gradient button (booking-jump + add-to-cart). */
.bp-shop-product-detail__cart .bp-booking-jump,
.bp-shop-product-detail__cart .button,
.bp-shop-product-detail__cart .single_add_to_cart_button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    gap: 9px;
    flex: 1 1 auto;
    width: 100%;
    min-height: 54px;
    padding: 0 24px;
    border: 0;
    border-radius: 14px;
    background: linear-gradient(135deg, #e77fb0, #d3699a);
    color: #ffffff;
    font-size: 16px;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 14px 30px -12px rgba(211, 105, 154, 0.95);
    transition: filter 0.15s ease;
}

.bp-shop-product-detail__cart .bp-booking-jump:hover,
.bp-shop-product-detail__cart .button:hover,
.bp-shop-product-detail__cart .single_add_to_cart_button:hover {
    filter: brightness(1.05);
    background: linear-gradient(135deg, #e77fb0, #d3699a);
    color: #ffffff;
}


/* Tabbed detail — a contained white rounded card on a light-grey band
 * (design: docs/Designs/Product Page.dc.html). The radio-driven show/hide
 * mechanism from LP is preserved; only the visual treatment changes from
 * full-bleed pink pills to underline tabs inside the card. */
.bp-shop-product-detail__tabs {
    background: #f3f4f7;
    padding: 46px 0 64px;
}

.bp-shop-product-detail__tabs-card {
    max-width: 100%;
    margin: 0 auto;
    background: #ffffff;
    border: 1px solid #eceef3;
    border-radius: 22px;
    box-shadow: 0 24px 50px -34px rgba(24, 28, 40, 0.35);
    overflow: hidden;
}

.bp-shop-product-detail #learn-press-course-tabs {
    position: relative;
}

.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    width: 0;
    height: 0;
}

.bp-shop-product-detail #learn-press-course-tabs .wrapper-course-nav-tabs {
    border-bottom: 1px solid #eef0f4;
    margin: 0;
    background: transparent;
    padding: 8px 8px 0;
}

.bp-shop-product-detail #learn-press-course-tabs .learn-press-nav-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.bp-shop-product-detail #learn-press-course-tabs .learn-press-nav-tabs .course-nav {
    margin: 0;
}

.bp-shop-product-detail #learn-press-course-tabs .learn-press-nav-tabs .course-nav::after {
    content: none;
}

.bp-shop-product-detail #learn-press-course-tabs .learn-press-nav-tabs .course-nav label {
    display: inline-flex;
    align-items: center;
    padding: 15px 24px;
    margin-bottom: -1px;
    border: 0;
    border-bottom: 3px solid transparent;
    border-radius: 0;
    background: transparent;
    color: #9aa0ac;
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.bp-shop-product-detail #learn-press-course-tabs .learn-press-nav-tabs .course-nav:not(.active):hover label {
    color: #565b66;
}

/* Active state is driven solely by the radio `:checked` selectors below, NOT
 * by the static `.active` class (which LP renders only on the first tab and
 * never moves). Basing the underline on `.active` would leave the first tab
 * underlined even after switching tabs. */

/* Radio-driven highlight, mirrors LP's :nth-child trick. */
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(1):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(1) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(2):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(2) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(3):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(3) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(4):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(4) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(5):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(5) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(6):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(6) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(7):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(7) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(8):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(8) label,
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(9):checked ~ .wrapper-course-nav-tabs .learn-press-nav-tabs .course-nav:nth-child(9) label {
    background: transparent;
    color: #16181d;
    border-bottom-color: #d3699a;
}

.bp-shop-product-detail #learn-press-course-tabs .course-tab-panels {
    margin: 0;
    background: #ffffff;
    padding: 40px 44px 48px;
}

.bp-shop-product-detail #learn-press-course-tabs .course-tab-panel {
    display: none;
    padding-top: 0;
}

/* Description panel typography (design: "About this class"). */
.bp-shop-product-detail #learn-press-course-tabs .course-tab-panel {
    color: #4a4e59;
    font-size: 16px;
    line-height: 1.75;
}

.bp-shop-product-detail #learn-press-course-tabs .course-tab-panel > *:first-child {
    margin-top: 0;
}

.bp-shop-product-detail #learn-press-course-tabs .course-tab-panel h1,
.bp-shop-product-detail #learn-press-course-tabs .course-tab-panel h2,
.bp-shop-product-detail #learn-press-course-tabs .course-tab-panel h3 {
    color: #16181d;
    letter-spacing: -0.5px;
}

/* Requirements panel — restyle the shared requirement cards to the new,
 * lighter treatment ONLY inside the product detail (the LP course page keeps
 * its existing look via the un-scoped rules above). */
.bp-shop-product-detail .bp-course-requirements {
    padding: 0;
}

.bp-shop-product-detail .bp-course-requirements__title {
    font-size: 26px;
    font-weight: 800;
    letter-spacing: -0.5px;
    margin-bottom: 10px;
}

.bp-shop-product-detail .bp-course-requirements__intro {
    color: #7d828e;
    font-size: 15px;
    line-height: 1.6;
    margin-bottom: 28px;
}

.bp-shop-product-detail .bp-course-requirement-card {
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 13px;
    align-items: center;
    padding: 24px;
    border-radius: 18px;
    background: #f6f7f9;
    color: #16181d;
}

/* Icon becomes a boxed 44px white square (design). Aligned to the title row. */
.bp-shop-product-detail .bp-course-requirement-card__icon {
    align-self: start;
    width: 44px;
    height: 44px;
    border-radius: 13px;
    background: #ffffff;
    border: 1px solid #eceef3;
}

.bp-shop-product-detail .bp-course-requirement-card__icon svg {
    width: 22px;
    height: 22px;
    color: #16181d;
}

/* The body spans both columns on the second grid row so the description sits
 * full-width under the icon+title header. */
.bp-shop-product-detail .bp-course-requirement-card__body {
    align-self: center;
}

.bp-shop-product-detail .bp-course-requirement-card__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 0;
    flex-wrap: wrap;
}

.bp-shop-product-detail .bp-course-requirement-card__title {
    font-size: 17px;
    font-weight: 700;
}

.bp-shop-product-detail .bp-course-requirement-card__pill {
    background: #fbe6f0;
    color: #c15c92;
    font-size: 11.5px;
    padding: 6px 12px;
}

.bp-shop-product-detail .bp-course-requirement-card__description {
    margin-top: 14px;
    color: #565b66;
    font-size: 14.5px;
    line-height: 1.65;
}

/* Show the active panel — duplicates the LP core CSS rule in case learnpress.css
 * isn't loaded on the Woo product page. */
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(1):checked ~ .course-tab-panels .course-tab-panel:nth-child(1),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(2):checked ~ .course-tab-panels .course-tab-panel:nth-child(2),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(3):checked ~ .course-tab-panels .course-tab-panel:nth-child(3),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(4):checked ~ .course-tab-panels .course-tab-panel:nth-child(4),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(5):checked ~ .course-tab-panels .course-tab-panel:nth-child(5),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(6):checked ~ .course-tab-panels .course-tab-panel:nth-child(6),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(7):checked ~ .course-tab-panels .course-tab-panel:nth-child(7),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(8):checked ~ .course-tab-panels .course-tab-panel:nth-child(8),
.bp-shop-product-detail #learn-press-course-tabs input[name="learn-press-course-tab-radio"]:nth-child(9):checked ~ .course-tab-panels .course-tab-panel:nth-child(9) {
    display: block;
}

@media (max-width: 991px) {
    .bp-shop-product-detail__media {
        min-height: 0;
        aspect-ratio: 16 / 11;
        max-height: 420px;
    }
}

@media (max-width: 767px) {
    .bp-shop-product-detail__hero {
        padding: 24px 0 32px;
    }

    .bp-shop-product-detail__card {
        padding: 24px 20px;
    }

    .bp-shop-product-detail__media {
        aspect-ratio: 16 / 11;
        max-height: 360px;
    }

    .bp-shop-product-detail__facts {
        grid-template-columns: 1fr 1fr;
    }

    .bp-shop-product-detail__pricebar {
        flex-direction: column;
        align-items: flex-start;
    }

    .bp-shop-product-detail__pass-chip {
        max-width: none;
        width: 100%;
    }

    .bp-shop-product-detail__tabs {
        padding: 28px 0 40px;
    }

    .bp-shop-product-detail #learn-press-course-tabs .course-tab-panels {
        padding: 24px 20px 28px;
    }

    .bp-shop-product-detail #learn-press-course-tabs .learn-press-nav-tabs .course-nav label {
        padding: 13px 16px;
        font-size: 14px;
    }
}


/* Booking widget — rendered inside the hero of studio class products in
 * place of the WC add-to-cart row. The trigger button matches the hero
 * cart-button style; the expandable panel is rendered on the dark hero so
 * it uses a translucent white surface to keep contrast readable. */
.bp-booking-widget {
    margin-top: 22px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.bp-booking-widget__cta {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 44px;
    padding: 0 26px;
    border: 0;
    border-radius: 999px;
    background: #ffffff;
    color: #2d5eb5;
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    align-self: flex-start;
}

.bp-booking-widget__cta:hover:not([disabled]) {
    background: #d96fa2;
    color: #ffffff;
}

.bp-booking-widget__cta[disabled] {
    opacity: 0.55;
    cursor: not-allowed;
}

.bp-booking-widget__note,
.bp-booking-widget__balance {
    margin: 0;
    color: rgba(255, 255, 255, 0.85);
    font-size: 13px;
    line-height: 1.4;
}

.bp-booking-widget__buy-link {
    margin-left: 6px;
    color: #ffffff;
    text-decoration: underline;
}

.bp-booking-widget__buy-link:hover {
    color: #d96fa2;
}

.bp-booking-widget__panel {
    background: rgba(255, 255, 255, 0.96);
    color: #1d1d1d;
    border-radius: 16px;
    padding: 20px;
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.18);
}

.bp-booking-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.bp-booking-form__row {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.bp-booking-form__row label {
    font-size: 13px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-booking-form__row select,
.bp-booking-form__row input[type="tel"] {
    width: 100%;
    height: 42px;
    padding: 0 12px;
    border: 1px solid rgba(0, 0, 0, 0.18);
    border-radius: 10px;
    background: #ffffff;
    color: #1d1d1d;
    font-size: 14px;
}

.bp-booking-form__row select:focus,
.bp-booking-form__row input[type="tel"]:focus {
    outline: 0;
    border-color: #2d5eb5;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.18);
}

.bp-booking-form__group {
    border: 0;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: center;
}

.bp-booking-form__group legend {
    width: 100%;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 4px;
    color: #1d1d1d;
}

.bp-booking-form__radio,
.bp-booking-form__check {
    display: flex;
    gap: 8px;
    font-size: 13px;
    color: #2c2c2c;
    line-height: 1.4;
    cursor: pointer;
    align-items: flex-start;
}

.bp-booking-form__radio input,
.bp-booking-form__check input {
    margin-top: 3px;
    flex: 0 0 auto;
}

/* Pregnancy first-trimester warning — only shown when "Igen" is selected. */
.bp-booking-form__pregnancy-note {
    width: 100%;
    margin: 4px 0 0;
    font-size: 13px;
    line-height: 1.4;
    color: #b3214c;
    display: none;
}

.bp-booking-form__group:has(input[name="pregnancy_disclosed"][value="1"]:checked) .bp-booking-form__pregnancy-note {
    display: block;
}

.bp-booking-form__check--required span::after {
    content: " *";
    color: #c93164;
}

.bp-booking-form__feedback {
    min-height: 18px;
    font-size: 13px;
    color: #1d1d1d;
}

.bp-booking-form__feedback--error {
    color: #c93164;
}

.bp-booking-form__actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 4px;
}

.bp-booking-form__cancel,
.bp-booking-form__submit {
    min-height: 42px;
    padding: 0 22px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    border: 0;
    line-height: 1;
}

.bp-booking-form__cancel {
    background: transparent;
    color: #2d5eb5;
    border: 1px solid rgba(45, 94, 181, 0.4);
}

.bp-booking-form__cancel:hover {
    background: rgba(45, 94, 181, 0.08);
}

.bp-booking-form__submit {
    background: #2d5eb5;
    color: #ffffff;
}

.bp-booking-form__submit:hover:not([disabled]) {
    background: #d96fa2;
}

.bp-booking-form__submit[disabled] {
    opacity: 0.55;
    cursor: not-allowed;
}

.bp-booking-form--loading {
    opacity: 0.7;
    pointer-events: none;
}

.bp-booking-widget__success {
    background: rgba(255, 255, 255, 0.96);
    color: #1d1d1d;
    border-radius: 16px;
    padding: 18px 20px;
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.18);
}

.bp-booking-widget__success-title {
    margin: 0 0 6px;
    font-size: 18px;
    font-weight: 700;
    color: #2d5eb5;
}

.bp-booking-widget__success-text {
    margin: 0;
    font-size: 14px;
    line-height: 1.5;
    color: #2c2c2c;
}

@media (max-width: 575.98px) {
    .bp-booking-widget__panel {
        padding: 16px;
    }

    .bp-booking-form__actions {
        flex-direction: column-reverse;
    }

    .bp-booking-form__cancel,
    .bp-booking-form__submit {
        width: 100%;
    }
}


/* Ajándékkártyák / gift cards section. Matches the Figma:
 * - white rounded card with subtle shadow
 * - top row: pink gift icon + pink price pill
 * - blue session bar full-width
 * - pink CTA + grey deadline text
 */
.bp-gift-cards {
    padding: 64px 0;
    background: #f7f8fb;
}

.bp-gift-cards__header {
    margin-bottom: 32px;
}

.bp-gift-cards__title {
    font-size: 32px;
    font-weight: 700;
    color: #1d1d1d;
    margin: 0 0 10px;
}

.bp-gift-cards__description {
    font-size: 15px;
    color: #4a4a4a;
    margin: 0;
    max-width: 720px;
}

.bp-gift-cards__grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 22px;
}

.bp-gift-card {
    display: flex;
}

.bp-gift-card__inner {
    flex: 1;
    background: #ffffff;
    border-radius: 18px;
    padding: 26px 26px 22px;
    box-shadow: 0 12px 36px rgba(20, 24, 60, 0.08);
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.bp-gift-card__top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.bp-gift-card__icon {
    color: #d96fa2;
    line-height: 0;
}

.bp-gift-card__price {
    background: #d96fa2;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    padding: 8px 16px;
    border-radius: 999px;
    line-height: 1;
}

.bp-gift-card__price .price,
.bp-gift-card__price .amount,
.bp-gift-card__price bdi {
    color: inherit;
    font-size: inherit;
    font-weight: inherit;
}

.bp-gift-card__title {
    font-size: 22px;
    font-weight: 700;
    color: #1d1d1d;
    margin: 0;
}

.bp-gift-card__session {
    background: #2d5eb5;
    color: #ffffff;
    font-size: 18px;
    font-weight: 700;
    text-align: center;
    padding: 12px 14px;
    border-radius: 6px;
    margin: 0 -6px;
}

.bp-gift-card__body {
    color: #4a4a4a;
    font-size: 14px;
    line-height: 1.5;
    margin: 0;
}

.bp-gift-card__cta {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    margin-top: 4px;
    padding: 12px 22px;
    background: #d96fa2;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    border-radius: 999px;
    text-decoration: none;
    align-self: center;
    transition: background 0.15s ease;
}

.bp-gift-card__cta:hover,
.bp-gift-card__cta:focus,
a.bp-gift-card__cta:hover,
a.bp-gift-card__cta:focus {
    background: #c45a8e;
    /* `!important` beats the generic `a:hover` rule in the parent-theme
     * `additional.css` bundle — same reason as `.bp-pass-card__cta:hover`. */
    color: #ffffff !important;
    text-decoration: none !important;
}

.bp-gift-card__deadline {
    margin: 6px 0 0;
    text-align: center;
    color: #8a8f99;
    font-size: 12px;
}

@media (max-width: 575.98px) {
    .bp-gift-cards {
        padding: 48px 0;
    }

    .bp-gift-cards__title {
        font-size: 26px;
    }
}


/* Voucher recipient form — rendered inside the WC add-to-cart form on the
 * gift card product page (dark hero background). Surfaces a light panel so
 * the buyer can read what they're typing. */
.bp-voucher-form {
    background: rgba(255, 255, 255, 0.96);
    color: #1d1d1d;
    border-radius: 16px;
    padding: 20px;
    margin: 22px 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.18);
}

.bp-voucher-form__title {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    color: #2d5eb5;
}

.bp-voucher-form__lead {
    margin: 0;
    font-size: 13px;
    color: #4a4a4a;
    line-height: 1.4;
}

.bp-voucher-form__row {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.bp-voucher-form__row label {
    font-size: 13px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-voucher-form__required {
    color: #c93164;
}

.bp-voucher-form__row input,
.bp-voucher-form__row textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid rgba(0, 0, 0, 0.18);
    border-radius: 10px;
    background: #ffffff;
    color: #1d1d1d;
    font-size: 14px;
    font-family: inherit;
}

.bp-voucher-form__row input:focus,
.bp-voucher-form__row textarea:focus {
    outline: 0;
    border-color: #2d5eb5;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.18);
}

.bp-voucher-form__hint {
    font-size: 12px;
    color: #6b6f78;
}

.bp-voucher-form__eligibility {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(45, 94, 181, 0.06);
}

.bp-voucher-form__eligibility-label {
    font-size: 13px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-voucher-form__eligibility-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.bp-voucher-form__eligibility-chip {
    display: inline-block;
    font-size: 12px;
    font-weight: 600;
    color: #2d5eb5;
    background: #ffffff;
    border: 1px solid rgba(45, 94, 181, 0.28);
    border-radius: 999px;
    padding: 4px 12px;
    line-height: 1.3;
    text-decoration: none;
    transition: background-color 0.15s ease, border-color 0.15s ease;
}

a.bp-voucher-form__eligibility-chip:hover,
a.bp-voucher-form__eligibility-chip:focus {
    background: #2d5eb5;
    border-color: #2d5eb5;
    color: #ffffff;
    text-decoration: none;
}

.bp-voucher-form__eligibility-note {
    margin: 0;
    font-size: 12px;
    color: #6b6f78;
    line-height: 1.4;
}


/* Voucher redemption page — narrow centered column. Reused for all six
 * view states; each one provides its own headline + form. */
.bp-voucher-redemption-page {
    padding: 60px 0 80px;
    background: #f7f8fb;
    min-height: 60vh;
}

.bp-voucher-redeem {
    max-width: 540px;
    margin: 0 auto;
    background: #ffffff;
    border-radius: 18px;
    padding: 38px 32px;
    box-shadow: 0 12px 36px rgba(20, 24, 60, 0.08);
    text-align: center;
}

.bp-voucher-redeem--success .bp-voucher-redeem__badge {
    display: inline-flex;
    width: 72px;
    height: 72px;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: rgba(45, 94, 181, 0.12);
    color: #2d5eb5;
    margin: 0 auto 14px;
}

.bp-voucher-redeem__title {
    margin: 0 0 12px;
    font-size: 26px;
    font-weight: 700;
    color: #1d1d1d;
}

.bp-voucher-redeem__lead {
    margin: 0 0 14px;
    color: #4a4a4a;
    font-size: 15px;
    line-height: 1.5;
}

.bp-voucher-redeem__card {
    background: #f3f5fa;
    border-radius: 14px;
    padding: 18px 18px 14px;
    margin: 18px 0 22px;
}

.bp-voucher-redeem__greeting {
    margin: 0 0 4px;
    color: #6b6f78;
    font-size: 14px;
}

.bp-voucher-redeem__big {
    margin: 0 0 8px;
    font-size: 22px;
    font-weight: 700;
    color: #2d5eb5;
}

.bp-voucher-redeem__form {
    margin: 18px 0 0;
    display: flex;
    gap: 8px;
    justify-content: center;
}

.bp-voucher-redeem__form--stacked {
    flex-direction: column;
    text-align: left;
    gap: 14px;
}

.bp-voucher-redeem__form input[type="text"],
.bp-voucher-redeem__form input[type="email"],
.bp-voucher-redeem__form input[type="password"] {
    flex: 1;
    padding: 12px 14px;
    border: 1px solid rgba(0, 0, 0, 0.18);
    border-radius: 10px;
    font-size: 15px;
    background: #ffffff;
    color: #1d1d1d;
}

.bp-voucher-redeem__form input:focus {
    outline: 0;
    border-color: #2d5eb5;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.18);
}

.bp-voucher-redeem__form label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-voucher-redeem__row-pair {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.bp-voucher-redeem__check {
    flex-direction: row;
    align-items: flex-start;
    gap: 8px;
    font-weight: 500;
    color: #2c2c2c;
    font-size: 13px;
    line-height: 1.4;
}

.bp-voucher-redeem__check input[type="checkbox"] {
    margin-top: 3px;
}

.bp-voucher-redeem__hint {
    color: #6b6f78;
    font-weight: 400;
}

.bp-voucher-redeem__submit {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    background: #d96fa2;
    color: #ffffff;
    border: 0;
    border-radius: 999px;
    padding: 12px 28px;
    font-size: 15px;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-voucher-redeem__submit:hover,
.bp-voucher-redeem__submit:focus,
a.bp-voucher-redeem__submit:hover,
a.bp-voucher-redeem__submit:focus {
    background: #c45a8e;
    /* `!important` beats the generic `a:hover` rule in the parent-theme
     * `additional.css` bundle (which forces a pink link colour) — otherwise
     * the label text turns pink and disappears against the pink button.
     * Same reason as `.bp-pass-card__cta:hover` above. */
    color: #ffffff !important;
    text-decoration: none !important;
}

/* Secondary "Fiókom" action on the success screen — an outline button so it
 * reads as a button (per request) but sits below the primary pink CTA / the
 * clickable class chips in visual weight. */
.bp-voucher-redeem__submit--account {
    background: #ffffff;
    color: #2d5eb5;
    border: 1px solid rgba(45, 94, 181, 0.4);
}

.bp-voucher-redeem__submit--account:hover,
.bp-voucher-redeem__submit--account:focus,
a.bp-voucher-redeem__submit--account:hover,
a.bp-voucher-redeem__submit--account:focus {
    background: #2d5eb5;
    border-color: #2d5eb5;
    color: #ffffff !important;
}

/* Eligible-class chips on the redemption success screen — the recipient books
 * directly from here instead of being sent to the shop to hunt for the class.
 * Mirrors the purchase-form eligibility chips. */
.bp-voucher-redeem__eligibility {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px 16px;
    margin: 4px 0 6px;
    border-radius: 12px;
    background: rgba(45, 94, 181, 0.06);
}

.bp-voucher-redeem__eligibility-label {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-voucher-redeem__eligibility-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
}

.bp-voucher-redeem__eligibility-chip {
    display: inline-block;
    font-size: 13px;
    font-weight: 600;
    color: #2d5eb5;
    background: #ffffff;
    border: 1px solid rgba(45, 94, 181, 0.28);
    border-radius: 999px;
    padding: 6px 14px;
    line-height: 1.3;
    text-decoration: none;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

a.bp-voucher-redeem__eligibility-chip:hover,
a.bp-voucher-redeem__eligibility-chip:focus {
    background: #2d5eb5;
    border-color: #2d5eb5;
    /* `!important` for the same parent-theme `a:hover` override reason. */
    color: #ffffff !important;
    text-decoration: none !important;
}

.bp-voucher-redeem__actions {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 14px;
    margin-top: 20px;
    flex-wrap: wrap;
}

.bp-voucher-redeem__link {
    color: #2d5eb5;
    text-decoration: underline;
    font-size: 14px;
}

.bp-voucher-redeem__alt {
    margin: 4px 0 0;
    text-align: center;
    font-size: 13px;
}

.bp-voucher-redeem__alt a,
.bp-voucher-redeem__link-button {
    color: #2d5eb5;
}

.bp-voucher-redeem__link-button {
    background: transparent;
    border: 0;
    padding: 0;
    font: inherit;
    font-weight: 700;
    text-decoration: underline;
    cursor: pointer;
}

.bp-voucher-redeem__link-button:hover {
    color: #1d2746;
}

.bp-voucher-redeem__alert {
    max-width: 540px;
    margin: 0 auto 14px;
    padding: 12px 16px;
    border-radius: 10px;
    font-size: 14px;
    line-height: 1.4;
    text-align: center;
}

.bp-voucher-redeem__alert--error {
    background: #fde6ec;
    color: #b3214c;
}

@media (max-width: 575.98px) {
    .bp-voucher-redeem {
        padding: 28px 22px;
    }

    .bp-voucher-redeem__form {
        flex-direction: column;
    }

    .bp-voucher-redeem__row-pair {
        grid-template-columns: 1fr;
    }
}


/* When passes / gift cards render inside the shop archive (under the classes
 * filter) they should feel like part of the same page rather than separate
 * marketing widgets — no own background, no oversized padding, grid matches
 * the shop content column's 3-col rhythm, title aligned with the shop
 * container's gutter. The original full-width landing-page presentation
 * keeps working for `components/passes-section` and `components/gift-cards-section`
 * when called without the modifier. */
.bp-passes--shop-inline,
.bp-gift-cards--shop-inline {
    background: transparent;
    padding: 28px 0 12px;
}

/* The components wrap their content in `.container` for full-width landing
 * use; inside the shop content column we don't want extra gutters or a
 * max-width — let the cards line up edge-to-edge with the products grid. */
.bp-passes--shop-inline > .container,
.bp-gift-cards--shop-inline > .container {
    padding-left: 0;
    padding-right: 0;
    max-width: none;
    width: 100%;
}

.bp-passes--shop-inline .bp-passes__header,
.bp-gift-cards--shop-inline .bp-gift-cards__header {
    margin-bottom: 18px;
}

.bp-passes--shop-inline .bp-passes__title,
.bp-gift-cards--shop-inline .bp-gift-cards__title {
    font-size: 26px;
    margin: 0;
}

.bp-passes--shop-inline .bp-passes__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}

.bp-passes--shop-inline .bp-pass-card__inner {
    min-height: 0;
}

.bp-passes--shop-inline .bp-pass-card__session {
    /* Match the inner padding so the ribbon goes edge to edge. */
    margin-left: -22px;
    margin-right: -22px;
}

.bp-gift-cards--shop-inline .bp-gift-cards__grid {
    /* Match the passes grid (4 equal columns / 18px gap) so a gift card is the
     * same width as a pass card even when only one is published. */
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}

@media (max-width: 991.98px) {
    .bp-passes--shop-inline .bp-passes__grid,
    .bp-gift-cards--shop-inline .bp-gift-cards__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .bp-passes--shop-inline .bp-passes__grid,
    .bp-gift-cards--shop-inline .bp-gift-cards__grid {
        grid-template-columns: 1fr;
    }
}


/* Booking widget — calendar + time-pill wizard.
 *
 * Outer `.bp-booking-calendar-panel` is the light-gray boxed surface with a
 * heading. Inside it sits `.bp-booking-calendar` which is a CSS grid that
 * places the month calendar on the left and the time picker on the right
 * (stacks on mobile). Accent color = teal underline on available days,
 * dark navy + shadow on the selected day.
 */
.bp-booking-calendar-panel {
    background: #f4f5f8;
    border-radius: 16px;
    padding: 22px;
    margin-bottom: 14px;
}

.bp-booking-calendar-panel__title {
    margin: 0 0 18px;
    font-size: 16px;
    font-weight: 700;
    color: #1d1d1d;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.bp-booking-calendar {
    display: grid;
    grid-template-columns: minmax(280px, 380px) 1fr;
    gap: 26px;
    align-items: start;
}

.bp-booking-calendar__loading {
    grid-column: 1 / -1;
    text-align: center;
    color: #6b6f78;
    font-size: 13px;
    padding: 14px 0;
}

/* ---- Left column: calendar -------------------------------------------- */

.bp-booking-calendar__main {
    background: #ffffff;
    border-radius: 12px;
    padding: 14px 16px 16px;
    box-shadow: 0 2px 6px rgba(20, 24, 60, 0.04);
}

.bp-booking-calendar__header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 0 12px;
}

.bp-booking-calendar__title {
    flex: 0 0 auto;
    margin: 0 6px;
    font-size: 14px;
    font-weight: 700;
    color: #1d1d1d;
    order: 2;
}

.bp-booking-calendar__nav {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    border: 0;
    background: transparent;
    color: #1d1d1d;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.bp-booking-calendar__nav--prev { order: 1; margin-right: auto; }
.bp-booking-calendar__nav--next { order: 3; margin-left: auto; }

.bp-booking-calendar__nav:hover:not([disabled]) {
    background: rgba(0, 0, 0, 0.04);
}

.bp-booking-calendar__nav[disabled] {
    opacity: 0.3;
    cursor: not-allowed;
}

.bp-booking-calendar__weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
    margin-bottom: 6px;
}

.bp-booking-calendar__weekday {
    text-align: center;
    font-size: 11px;
    font-weight: 500;
    color: #9aa0aa;
    text-transform: lowercase;
    padding: 4px 0;
}

.bp-booking-calendar__grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
}

.bp-booking-calendar__day {
    width: 100%;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: transparent;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    color: #4a4a4a;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease, box-shadow 0.12s ease;
    position: relative;
    padding: 0;
}

.bp-booking-calendar__day--blank {
    visibility: hidden;
}

.bp-booking-calendar__day--disabled {
    color: rgba(29, 29, 29, 0.25);
    cursor: not-allowed;
}

.bp-booking-calendar__day--full {
    color: #b3214c;
    cursor: not-allowed;
    background: rgba(201, 49, 100, 0.06);
}

/* Teal underline accent on days that have available slots — matches the
 * reference. Color the digit dark; the line below signals availability. */
.bp-booking-calendar__day--available {
    color: #1d1d1d;
    background: #f4f5f8;
}

.bp-booking-calendar__day--available::after {
    content: "";
    position: absolute;
    left: 25%;
    right: 25%;
    bottom: 5px;
    height: 2px;
    border-radius: 2px;
    background: #2bd1c1;
}

.bp-booking-calendar__day--available:hover {
    background: rgba(43, 209, 193, 0.12);
}

.bp-booking-calendar__day--today {
    box-shadow: inset 0 0 0 1.5px rgba(45, 94, 181, 0.35);
}

.bp-booking-calendar__day--selected {
    background: #1d2746 !important;
    color: #ffffff !important;
    box-shadow: 0 4px 10px rgba(29, 39, 70, 0.35);
}

.bp-booking-calendar__day--selected::after {
    background: #2bd1c1;
}

/* ---- Right column: times --------------------------------------------- */

.bp-booking-calendar__times {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.bp-booking-calendar__times-col-header {
    font-size: 13px;
    font-weight: 600;
    color: #6b6f78;
    text-align: center;
    padding-bottom: 8px;
}

.bp-booking-calendar__times-panel {
    background: #ffffff;
    border-radius: 12px;
    padding: 18px 20px;
    box-shadow: 0 2px 6px rgba(20, 24, 60, 0.04);
    min-height: 220px;
}

.bp-booking-calendar__times-hint {
    margin: 0;
    color: #9aa0aa;
    font-size: 13px;
    text-align: center;
    padding: 40px 0;
}

.bp-booking-calendar__times-heading {
    margin: 0 0 14px;
    font-size: 13px;
    font-weight: 600;
    color: #1d1d1d;
    text-align: center;
    padding-bottom: 10px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.bp-booking-calendar__times-section {
    margin-bottom: 16px;
}

.bp-booking-calendar__times-section:last-child {
    margin-bottom: 0;
}

.bp-booking-calendar__times-section-title {
    margin: 0 0 8px;
    font-size: 13px;
    font-weight: 700;
    color: #1d1d1d;
}

.bp-booking-calendar__pills {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.bp-booking-calendar__pill {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    padding: 10px 14px;
    border: 0;
    border-radius: 10px;
    background: #f4f5f8;
    color: #1d1d1d;
    text-align: left;
    cursor: pointer;
    transition: background 0.12s ease, box-shadow 0.12s ease, color 0.12s ease;
}

.bp-booking-calendar__pill:hover:not([disabled]) {
    background: rgba(43, 209, 193, 0.15);
}

.bp-booking-calendar__pill--selected {
    background: #1d2746;
    color: #ffffff;
    box-shadow: 0 4px 10px rgba(29, 39, 70, 0.3);
}

.bp-booking-calendar__pill--full {
    opacity: 0.55;
    cursor: not-allowed;
}

.bp-booking-calendar__pill-time {
    font-size: 14px;
    font-weight: 700;
}

.bp-booking-calendar__pill-meta {
    font-size: 11px;
    font-weight: 500;
    color: inherit;
    opacity: 0.8;
}

/* Stack the two columns on smaller screens — calendar on top, times below */
@media (max-width: 767.98px) {
    .bp-booking-calendar {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .bp-booking-calendar-panel {
        padding: 16px;
    }
    .bp-booking-calendar__times-panel {
        min-height: 0;
    }
}

.bp-booking-form__selected-label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 12px;
    background: rgba(45, 94, 181, 0.08);
    border-radius: 10px;
    font-size: 12px;
    color: #2d5eb5;
    font-weight: 600;
}

.bp-booking-form__selected-label strong {
    color: #1d1d1d;
    font-size: 14px;
}

.bp-booking-form__step {
    display: flex;
    flex-direction: column;
    gap: 14px;
}


/* Hero CTA for studio classes — scrolls + activates the booking tab. */
.bp-booking-jump {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 44px;
    padding: 0 26px;
    border: 0;
    border-radius: 999px;
    background: #ffffff;
    color: #2d5eb5;
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    align-self: flex-start;
}

.bp-booking-jump:hover {
    background: #d96fa2;
    color: #ffffff;
}

.bp-booking-jump__balance {
    margin: 10px 0 0;
    color: rgba(255, 255, 255, 0.85);
    font-size: 13px;
    line-height: 1.4;
}

/* Widget when rendered inside the product tab — light surface, no shadow. */
.bp-booking-widget--tab {
    background: transparent;
    padding: 0;
}

.bp-booking-widget--tab .bp-booking-widget__panel {
    background: transparent;
    color: #1d1d1d;
    border-radius: 0;
    padding: 0;
    box-shadow: none;
}

.bp-booking-widget--tab .bp-booking-widget__note,
.bp-booking-widget--tab .bp-booking-widget__balance {
    color: #4a4a4a;
}

.bp-booking-widget--tab .bp-booking-widget__success {
    background: rgba(45, 94, 181, 0.06);
    color: #1d1d1d;
    box-shadow: none;
}

.bp-booking-widget__inline-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 36px;
    padding: 0 18px;
    margin-left: 10px;
    border: 0;
    border-radius: 999px;
    background: #2d5eb5;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}

.bp-booking-widget__inline-cta:hover {
    background: #d96fa2;
}

.bp-booking-widget__note--prompt {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}


/* Class format badges — small pill identifying csoportos vs egyéni studio
 * classes. Renders on shop cards (light surface) and the product detail
 * hero (dark surface, so the egyeni variant gets inverted contrast). */
.bp-shop-card__format {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    line-height: 1;
    align-self: flex-start;
}

.bp-shop-card__format--csoportos {
    background: rgba(45, 94, 181, 0.12);
    color: #2d5eb5;
}

.bp-shop-card__format--egyeni {
    background: rgba(217, 111, 162, 0.16);
    color: #b3214c;
}

/* Course type variants — same pill shape, different tint per kind so
 * admins / shoppers can tell at a glance whether a course is online,
 * in-person, or hibrid. */
.bp-shop-card__format--online {
    background: rgba(45, 94, 181, 0.12);
    color: #2d5eb5;
}

.bp-shop-card__format--in_person {
    background: rgba(43, 209, 193, 0.18);
    color: #0c8a7d;
}

.bp-shop-card__format--hibrid {
    background: rgba(217, 111, 162, 0.16);
    color: #b3214c;
}

/* Format badge — sits inside the white booking card (design uses a soft
 * blue chip with a leading dot). */
.bp-shop-product-detail__format {
    display: inline-flex;
    align-self: flex-start;
    align-items: center;
    gap: 7px;
    padding: 6px 13px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    line-height: 1;
}

.bp-shop-product-detail__format-dot {
    width: 6px;
    height: 6px;
    flex: 0 0 auto;
    border-radius: 999px;
    background: currentColor;
    opacity: 0.9;
}

.bp-shop-product-detail__format--csoportos {
    background: #eef1fc;
    color: #2f52b0;
}

.bp-shop-product-detail__format--egyeni {
    background: #fbe6f0;
    color: #c15c92;
}


/* ============================================================
 * Studio Admin (front-end dashboard) — read-only views for staff.
 * Same dashboard shell as the member Fiókom (docs/Designs/Fiokom.dc.html):
 * grey page, white sidebar card (user block + icon menu + logout), white
 * content card. Overview breaks out so its stat cards + panels sit on grey.
 * ============================================================ */
.bp-studio-admin {
    padding: 40px 0 80px;
    background: #f3f4f7;
    min-height: 70vh;
}

.bp-studio-admin__header {
    margin-bottom: 24px;
}

.bp-studio-admin__title {
    margin: 0;
    font-size: 30px;
    font-weight: 700;
    letter-spacing: -0.5px;
    color: #16181d;
}

.bp-studio-admin__subtitle {
    margin: 6px 0 0;
    color: #7d828e;
    font-size: 14.5px;
}

.bp-studio-admin__subtitle a {
    color: #3b62c4;
}

/* Layout: intro spans the full width; sidebar card + content card below. */
.bp-studio-admin__layout {
    display: block;
}

/* ---- Sidebar: white card (user block + icon menu + logout) ---- */
.bp-studio-admin__nav {
    background: #fff;
    border: 1px solid #eceef3;
    border-radius: 20px;
    box-shadow: 0 18px 40px -24px rgba(24, 28, 40, 0.28);
    padding: 22px 18px;
    margin-bottom: 20px;
}

.bp-studio-admin__user {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 4px 6px 18px;
}

.bp-studio-admin__avatar {
    width: 46px;
    height: 46px;
    flex: 0 0 auto;
    border-radius: 14px;
    background: linear-gradient(135deg, #e493bc 0%, #3b62c4 100%);
    color: #fff;
    font-weight: 700;
    font-size: 19px;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: 0.5px;
}

.bp-studio-admin__user-meta {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.bp-studio-admin__user-name {
    font-weight: 600;
    font-size: 15.5px;
    line-height: 1.2;
    color: #16181d;
}

.bp-studio-admin__user-role {
    color: #9aa0ac;
    font-size: 12.5px;
    margin-top: 2px;
}

.bp-studio-admin__divider {
    display: block;
    height: 1px;
    background: #eef0f4;
    margin: 0 6px 14px;
}

.bp-studio-admin__menu {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.bp-studio-admin__menu-item {
    margin: 0;
}

.bp-studio-admin__link,
.bp-studio-admin__logout {
    display: flex;
    align-items: center;
    gap: 13px;
    width: 100%;
    padding: 11px 14px;
    border-radius: 12px;
    font-size: 14.5px;
    font-weight: 500;
    line-height: 1.2;
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease;
}

.bp-studio-admin__link {
    color: #4a4e59;
}

.bp-studio-admin__link:hover {
    background: #f5f6f8;
    color: #4a4e59;
}

.bp-studio-admin__link.is-active {
    background: #edf1fc;
    color: #2f52b0;
    font-weight: 600;
    box-shadow: inset 3px 0 0 #3b62c4;
}

.bp-studio-admin__link-icon {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    fill: none;
    stroke: #a2a8b4;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: stroke 0.15s ease;
}

.bp-studio-admin__link:hover .bp-studio-admin__link-icon {
    stroke: #6b7280;
}

.bp-studio-admin__link.is-active .bp-studio-admin__link-icon {
    stroke: #3b62c4;
}

.bp-studio-admin__link-label {
    flex: 1;
}

.bp-studio-admin__link--ext {
    color: #9aa0ac;
}

.bp-studio-admin__logout {
    color: #9aa0ac;
}

.bp-studio-admin__logout:hover {
    background: #fdf1f5;
    color: #d3699a;
}

.bp-studio-admin__logout:hover .bp-studio-admin__link-icon {
    stroke: #d3699a;
}

/* Content column stays transparent — the views already carry their own white
   surfaces (stat cards, panels, filter bars, table wraps), so they read as
   cards on the grey rather than nesting inside another white card. */
.bp-studio-admin__body {
    min-width: 0;
}

/* Desktop (≥992px): two-column dashboard with a sticky sidebar. */
@media (min-width: 992px) {
    .bp-studio-admin__layout {
        display: grid;
        grid-template-columns: 288px minmax(0, 1fr);
        column-gap: 28px;
        align-items: start;
    }

    .bp-studio-admin__nav {
        margin-bottom: 0;
        position: sticky;
        top: 24px;
    }
}

/* Stat cards — white cards with a coloured icon tile. */
.bp-studio-admin__cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 20px;
    margin-bottom: 28px;
}

.bp-studio-admin__card {
    background: #fff;
    border: 1px solid #eceef3;
    border-radius: 18px;
    padding: 22px 22px 24px;
    box-shadow: 0 14px 34px -26px rgba(24, 28, 40, 0.3);
    display: block;
}

.bp-studio-admin__card-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    margin-bottom: 16px;
    background: #eef0f4;
}

.bp-studio-admin__card-icon svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: #4a4e59;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.bp-studio-admin__card-icon--blue {
    background: #eef1fc;
}

.bp-studio-admin__card-icon--blue svg {
    stroke: #3b62c4;
}

.bp-studio-admin__card-icon--pink {
    background: #fbeef4;
}

.bp-studio-admin__card-icon--pink svg {
    stroke: #d3699a;
}

.bp-studio-admin__card-label {
    display: block;
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: #9aa0ac;
    font-weight: 600;
}

.bp-studio-admin__card-value {
    display: block;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.5px;
    color: #16181d;
    line-height: 1.1;
    margin: 8px 0 4px;
}

.bp-studio-admin__card-hint {
    display: block;
    font-size: 12px;
    color: #9aa0ac;
}

/* Activity panels */
.bp-studio-admin__panels {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 20px;
    margin-bottom: 20px;
}

.bp-studio-admin__panels:last-child {
    margin-bottom: 0;
}

.bp-studio-admin__panel {
    background: #fff;
    border: 1px solid #eceef3;
    border-radius: 18px;
    padding: 20px 22px;
    box-shadow: 0 14px 34px -26px rgba(24, 28, 40, 0.3);
}

.bp-studio-admin__panel-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin: 0 0 12px;
    font-size: 15px;
    font-weight: 700;
    color: #1d1d1d;
}

.bp-studio-admin__panel-link {
    color: #2d5eb5;
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
}

.bp-studio-admin__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.bp-studio-admin__list-row {
    display: grid;
    grid-template-columns: 1fr 2fr auto;
    gap: 10px;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    font-size: 13px;
}

.bp-studio-admin__list-row:last-child {
    border-bottom: 0;
}

.bp-studio-admin__list-primary {
    font-weight: 700;
    color: #1d1d1d;
}

.bp-studio-admin__list-secondary {
    color: #4a4a4a;
}

.bp-studio-admin__list-time {
    color: #8a8f99;
    font-size: 12px;
    white-space: nowrap;
}

.bp-studio-admin__empty {
    color: #8a8f99;
    margin: 0;
    text-align: center;
    padding: 14px 0;
}

/* Filters */
.bp-studio-admin__filters {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    align-items: flex-end;
    padding: 14px 16px;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
    margin-bottom: 14px;
}

.bp-studio-admin__filter {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 12px;
    font-weight: 600;
    color: #4a4a4a;
}

.bp-studio-admin__filter--grow {
    flex: 1;
    min-width: 180px;
}

.bp-studio-admin__filter input,
.bp-studio-admin__filter select {
    height: 36px;
    padding: 0 10px;
    border: 1px solid rgba(0, 0, 0, 0.12);
    border-radius: 8px;
    background: #fff;
    font-size: 13px;
    color: #1d1d1d;
    font-weight: 500;
}

.bp-studio-admin__submit {
    height: 36px;
    padding: 0 18px;
    background: #2d5eb5;
    color: #fff;
    border: 0;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
}

.bp-studio-admin__submit:hover {
    background: #244d98;
}

.bp-studio-admin__count {
    margin: 0 0 10px;
    color: #6b6f78;
    font-size: 12px;
}

/* Tables */
.bp-studio-admin__table-wrap {
    overflow-x: auto;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
    padding: 8px 10px;
}

.bp-studio-admin__table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.bp-studio-admin__table thead th {
    text-align: left;
    padding: 12px 14px;
    background: rgba(45, 94, 181, 0.06);
    color: #1d1d1d;
    font-weight: 700;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.bp-studio-admin__table tbody td {
    padding: 12px 14px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    color: #2c2c2c;
    vertical-align: top;
}

.bp-studio-admin__table tbody tr:last-child td {
    border-bottom: 0;
}

.bp-studio-admin__table tbody tr:hover {
    background: rgba(45, 94, 181, 0.04);
}

.bp-studio-admin__row--cancelled,
.bp-studio-admin__row--expired,
.bp-studio-admin__row--voucher-cancelled,
.bp-studio-admin__row--voucher-expired {
    opacity: 0.55;
}

.bp-studio-admin__row--cancelled td {
    text-decoration: line-through;
}

.bp-studio-admin__empty-cell {
    text-align: center;
    color: #8a8f99;
    padding: 30px !important;
}

/* Status pills */
.bp-studio-admin__pill {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: rgba(0, 0, 0, 0.06);
    color: #4a4a4a;
}

.bp-studio-admin__pill--confirmed,
.bp-studio-admin__pill--redeemed {
    background: rgba(34, 139, 92, 0.15);
    color: #15693f;
}

.bp-studio-admin__pill--cancelled,
.bp-studio-admin__pill--expired {
    background: rgba(201, 49, 100, 0.15);
    color: #b3214c;
}

.bp-studio-admin__pill--pending {
    background: rgba(217, 111, 162, 0.15);
    color: #b3214c;
}

/* Cancel-booking button (studio admin roster) + result notices */
.bp-cancel-booking-form {
    display: inline-block;
    margin: 0;
}

.bp-cancel-booking-btn {
    appearance: none;
    border: 1px solid #c93164;
    background: transparent;
    color: #b3214c;
    border-radius: 6px;
    padding: 4px 12px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.bp-cancel-booking-btn:hover {
    background: #c93164;
    color: #fff;
}

.bp-studio-admin__notice {
    margin: 0 0 16px;
    padding: 10px 14px;
    border-radius: 6px;
    font-size: 13px;
}

.bp-studio-admin__notice--success {
    background: rgba(34, 139, 92, 0.12);
    color: #15693f;
}

.bp-studio-admin__notice--error {
    background: rgba(201, 49, 100, 0.12);
    color: #b3214c;
}

/* Health/consent declaration */
.bp-my-bookings__decl-prompt {
    margin: 0 0 24px;
    padding: 12px 16px;
    border-radius: 10px;
    background: rgba(217, 111, 162, 0.12);
    color: #b3214c;
    font-size: 14px;
}

.bp-my-bookings__decl-prompt a {
    font-weight: 700;
    color: #b3214c;
    white-space: nowrap;
}

.bp-declaration__status {
    margin: 0 0 20px;
    padding: 12px 16px;
    border-radius: 10px;
    font-size: 14px;
}

.bp-declaration__status--ok {
    background: rgba(34, 139, 92, 0.12);
    color: #15693f;
}

.bp-declaration__status--missing {
    background: rgba(217, 111, 162, 0.12);
    color: #b3214c;
}

.bp-declaration__status-hint {
    margin: 6px 0 0;
    font-size: 13px;
    opacity: 0.85;
}

.bp-declaration__fields {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px 20px;
    margin-bottom: 22px;
}

.bp-declaration__field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.bp-declaration__field--signature {
    max-width: 360px;
    margin-top: 8px;
}

.bp-declaration__label {
    font-size: 13px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-declaration__field input {
    padding: 9px 12px;
    border: 1px solid #d6d6d6;
    border-radius: 8px;
    font-size: 14px;
}

.bp-declaration__legal {
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 10px;
    padding: 16px 18px;
    margin-bottom: 18px;
    font-size: 14px;
    line-height: 1.55;
    max-height: 320px;
    overflow-y: auto;
    background: #fcfcfd;
}

.bp-declaration__check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 12px;
    font-size: 14px;
    line-height: 1.45;
}

.bp-declaration__check input {
    margin-top: 3px;
    flex: 0 0 auto;
}

.bp-declaration__date {
    margin: 8px 0 18px;
    font-size: 13px;
    color: #6a6a6a;
}

.bp-declaration__submit {
    appearance: none;
    border: 0;
    background: #2d5eb5;
    color: #fff;
    border-radius: 999px;
    padding: 12px 26px;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-declaration__submit:hover {
    background: #244d98;
}

.bp-declaration__admin-fill {
    margin: 18px 0;
}

.bp-declaration__admin-fill summary,
.bp-declaration__update-toggle {
    cursor: pointer;
    font-weight: 600;
    color: #2d5eb5;
    margin-bottom: 12px;
}

/* Member "update" toggle: collapses the re-fill form once a valid
   declaration is on file, so the page reads as done. */
.bp-declaration__update {
    margin-top: 4px;
}

.bp-declaration__update[open] .bp-declaration__update-toggle {
    margin-bottom: 20px;
}

.bp-declaration__paper-form {
    margin-top: 12px;
}

/* Declaration status badge (rosters / list) */
.bp-decl-badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.bp-decl-badge--ok {
    background: rgba(34, 139, 92, 0.15);
    color: #15693f;
}

.bp-decl-badge--missing {
    background: rgba(201, 49, 100, 0.15);
    color: #b3214c;
}

/* Declarations list: expandable per-member submission history */
.bp-declaration__toggle-col {
    width: 52px;
    white-space: nowrap;
}

.bp-declaration__history-toggle {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 9px;
    border: 1px solid rgba(45, 94, 181, 0.3);
    border-radius: 999px;
    background: #fff;
    color: #2d5eb5;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-declaration__history-toggle:hover {
    background: rgba(45, 94, 181, 0.08);
}

.bp-declaration__toggle-arrow {
    display: inline-block;
    transition: transform 0.15s ease;
}

.bp-declaration__history-toggle.is-open .bp-declaration__toggle-arrow {
    transform: rotate(90deg);
}

.bp-declaration__history-row > td {
    background: rgba(45, 94, 181, 0.04);
    padding: 8px 14px 14px 52px;
}

.bp-declaration__history-row:hover {
    background: transparent;
}

.bp-declaration__history-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    background: #fff;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 4px rgba(20, 24, 60, 0.06);
}

.bp-declaration__history-table thead th {
    text-align: left;
    padding: 8px 12px;
    background: rgba(45, 94, 181, 0.06);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #1d1d1d;
}

.bp-declaration__history-table tbody td {
    padding: 8px 12px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    color: #2c2c2c;
}

.bp-declaration__history-table tbody tr:last-child td {
    border-bottom: 0;
}

.bp-declaration__history-title {
    margin: 24px 0 10px;
    font-size: 15px;
    font-weight: 700;
    color: #1d1d1d;
}

.bp-declaration__history-viewing {
    font-weight: 600;
    color: #8a8f99;
    white-space: nowrap;
}

.bp-declaration__archived-note a {
    font-weight: 700;
    color: inherit;
}

.bp-studio-admin__table tbody tr.is-selected {
    background: rgba(45, 94, 181, 0.08);
}

.bp-studio-admin__row-link {
    font-weight: 600;
    color: #2d5eb5;
    text-decoration: none;
    white-space: nowrap;
}

.bp-studio-admin__row-link:hover {
    text-decoration: underline;
}

/* ---- Course feedback: My Account form ------------------------------- */
.bp-feedback {
    max-width: 760px;
}

.bp-feedback__notice {
    margin: 0 0 20px;
    padding: 16px 18px;
    border-radius: 10px;
    font-size: 14px;
    line-height: 1.5;
}

.bp-feedback__notice--ok {
    background: rgba(34, 139, 92, 0.12);
    color: #15693f;
}

.bp-feedback__notice--missing {
    background: rgba(217, 111, 162, 0.12);
    color: #b3214c;
}

.bp-feedback__thanks-title,
.bp-feedback__title {
    margin: 0 0 8px;
    font-size: 20px;
}

.bp-feedback__back {
    font-weight: 600;
}

.bp-feedback__lead {
    font-size: 14px;
    line-height: 1.55;
    margin: 0 0 18px;
}

.bp-feedback__summary {
    display: grid;
    gap: 6px;
    margin: 0 0 24px;
    padding: 14px 16px;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 10px;
    background: #fcfcfd;
}

.bp-feedback__summary-row {
    display: flex;
    gap: 10px;
    font-size: 14px;
}

.bp-feedback__summary-row dt {
    min-width: 110px;
    font-weight: 600;
    color: #1d1d1d;
    margin: 0;
}

.bp-feedback__summary-row dd {
    margin: 0;
}

.bp-feedback__scale-legend {
    font-size: 13px;
    font-style: italic;
    color: #555;
    margin: 0 0 18px;
}

.bp-feedback__section {
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 10px;
    padding: 14px 16px 18px;
    margin: 0 0 20px;
}

.bp-feedback__section-title {
    font-size: 15px;
    font-weight: 700;
    padding: 0 6px;
    color: #1d1d1d;
}

.bp-feedback__section-title small {
    font-weight: 400;
    color: #8a8f94;
}

.bp-feedback__likert {
    width: 100%;
    border-collapse: collapse;
    margin-top: 8px;
}

.bp-feedback__likert th,
.bp-feedback__likert td {
    border-bottom: 1px solid rgba(0, 0, 0, 0.07);
    padding: 8px 4px;
    vertical-align: middle;
}

.bp-feedback__likert-n {
    text-align: center;
    width: 44px;
    font-size: 13px;
    color: #8a8f94;
}

.bp-feedback__likert-q {
    text-align: left;
    font-weight: 500;
}

.bp-feedback__likert-hu {
    display: block;
    font-size: 14px;
    line-height: 1.4;
    color: #1d1d1d;
}

.bp-feedback__likert-en {
    display: block;
    font-size: 12px;
    color: #8a8f94;
    margin-top: 2px;
}

.bp-feedback__radio {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.bp-feedback__radio input {
    width: 18px;
    height: 18px;
    margin: 0;
}

.bp-feedback__field {
    display: block;
    margin: 0 0 16px;
}

.bp-feedback__field-label {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: #1d1d1d;
    margin-bottom: 8px;
}

.bp-feedback__checks {
    display: grid;
    gap: 8px;
}

.bp-feedback__checks--inline {
    grid-auto-flow: column;
    justify-content: start;
    gap: 22px;
}

.bp-feedback__check {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 14px;
    line-height: 1.4;
}

.bp-feedback__textarea,
.bp-feedback__input {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid #d6d6d6;
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
}

.bp-feedback__submit {
    display: inline-block;
    padding: 12px 26px;
    border: 0;
    border-radius: 999px;
    background: #1d1d1d;
    color: #fff;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
}

.bp-feedback__submit:hover {
    opacity: 0.9;
}

@media (max-width: 600px) {
    .bp-feedback__likert-en {
        display: none;
    }
    .bp-feedback__checks--inline {
        grid-auto-flow: row;
        gap: 8px;
    }
}

/* ---- Course feedback: admin badge ---------------------------------- */
.bp-feedback-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    text-decoration: none;
}

.bp-feedback-badge small {
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    opacity: 0.85;
}

.bp-feedback-badge--ok {
    background: rgba(34, 139, 92, 0.15);
    color: #15693f;
}

.bp-feedback-badge--missing {
    background: rgba(201, 49, 100, 0.15);
    color: #b3214c;
}

.bp-feedback-badge--none {
    background: rgba(0, 0, 0, 0.06);
    color: #8a8f94;
}

.bp-studio-admin__submit--secondary {
    background: transparent;
    border: 1px solid currentColor;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
}

.bp-studio-admin__score {
    width: 60px;
    text-align: center;
    font-weight: 600;
}

.bp-studio-admin__sub {
    color: #8a8f94;
    font-weight: 400;
}

/* Shared responsive video embed */
.bp-video-embed {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: 14px;
    overflow: hidden;
    background: #000;
}

.bp-video-embed iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

/* Course taster: gate + video list */
.bp-taster-page__title {
    margin-bottom: 12px;
}

.bp-taster-page__intro {
    margin-bottom: 28px;
}

.bp-taster-page__empty {
    color: #6a6a6a;
}

.bp-taster-gate {
    display: flex;
    justify-content: center;
    padding: 20px 0 50px;
}

.bp-taster-gate__card {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 4px 16px rgba(20, 24, 60, 0.08);
    padding: 32px;
    max-width: 460px;
    width: 100%;
}

.bp-taster-gate__title {
    margin: 0 0 8px;
    font-size: 22px;
}

.bp-taster-gate__lead {
    margin: 0 0 20px;
    font-size: 14px;
    color: #6a6a6a;
}

.bp-taster-gate__error {
    margin: 0 0 16px;
    padding: 10px 14px;
    border-radius: 8px;
    background: rgba(201, 49, 100, 0.12);
    color: #b3214c;
    font-size: 13px;
}

.bp-taster-gate__form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.bp-taster-gate__form label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
    font-weight: 600;
}

.bp-taster-gate__form input[type="text"],
.bp-taster-gate__form input[type="email"] {
    padding: 10px 12px;
    border: 1px solid #d6d6d6;
    border-radius: 8px;
    font-size: 14px;
}

.bp-taster-gate__check {
    flex-direction: row !important;
    align-items: flex-start;
    gap: 10px !important;
    font-weight: 400 !important;
}

.bp-taster-gate__check input {
    margin-top: 3px;
}

.bp-taster-gate__submit {
    appearance: none;
    border: 0;
    background: #2d5eb5;
    color: #fff;
    border-radius: 999px;
    padding: 12px 24px;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-taster-gate__submit:hover {
    background: #244d98;
}

.bp-taster-videos {
    display: flex;
    flex-direction: column;
    gap: 40px;
    padding-bottom: 50px;
}

.bp-taster-video__title {
    margin: 0 0 14px;
    font-size: 20px;
}

.bp-taster-video__description {
    margin-top: 14px;
    font-size: 14px;
    color: #4a4a4a;
}

.bp-taster-video__cta {
    display: inline-block;
    margin-top: 12px;
    font-weight: 700;
    color: #2d5eb5;
    text-decoration: none;
}

.bp-taster-video__cta:hover {
    text-decoration: underline;
}

/* Instructor: video section */
.bp-instructor-single__videos {
    margin-top: 50px;
}

.bp-instructor-single__video-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 24px;
    margin-top: 20px;
}

.bp-instructor-single__video {
    margin: 0;
}

.bp-instructor-single__video-title {
    margin-top: 8px;
    font-size: 14px;
    color: #4a4a4a;
}

/* My Account · Tanfolyamaim */
.bp-my-courses__empty {
    color: #6a6a6a;
}

.bp-my-courses__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.bp-my-courses__item {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 14px;
    padding: 18px 20px;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    flex-wrap: wrap;
}

.bp-my-courses__item--cancelled {
    opacity: 0.6;
}

.bp-my-courses__title {
    margin: 0 0 4px;
    font-size: 17px;
}

.bp-my-courses__meta {
    margin: 0 0 6px;
    font-size: 13px;
    color: #6a6a6a;
}

.bp-my-courses__type {
    font-weight: 600;
    text-transform: uppercase;
    font-size: 11px;
    letter-spacing: 0.04em;
    color: #2d5eb5;
}

.bp-my-courses__state {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
}

.bp-my-courses__state--completed {
    color: #15693f;
}

.bp-my-courses__state--active {
    color: #2d5eb5;
}

.bp-my-courses__state--cancelled {
    color: #b3214c;
}

.bp-my-courses__actions {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
    max-width: 260px;
}

.bp-my-courses__hint {
    margin: 0;
    font-size: 12px;
    color: #8a8f99;
    text-align: right;
}

/* ============================================================
 * Member account (Fiókom) — reskinned WooCommerce My Account.
 * Dashboard shell per docs/Designs/Fiokom.dc.html: grey page, white
 * sidebar card (user block + icon menu + logout), white content card.
 * Layout notes + body-class logic: docs/member-account.md.
 * ============================================================ */

/* Grey full-bleed page behind the account area (header/footer unchanged). */
.bp-account-page .bp-page {
    background: #f3f4f7;
}

/* Base (mobile / <992px): single column — intro, sidebar card, then the
   content card, each stacked. The grid below (≥992px) turns this into a
   two-column dashboard with a sticky sidebar. */
.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content {
    width: 100%;
    float: none;
    margin: 0 0 20px;
}

/* Intro (title + subtitle) — spans both columns on desktop. */
.bp-account__header {
    margin-bottom: 24px;
}

.bp-account__title {
    margin: 0;
    font-size: 30px;
    font-weight: 700;
    letter-spacing: -0.5px;
    color: #16181d;
}

.bp-account__subtitle {
    margin: 6px 0 0;
    color: #7d828e;
    font-size: 14.5px;
}

.bp-account__subtitle a {
    color: #3b62c4;
}

/* ---- Sidebar: white card (user block + icon menu + logout) ---- */
.bp-account__nav {
    background: #fff;
    border: 1px solid #eceef3;
    border-radius: 20px;
    box-shadow: 0 18px 40px -24px rgba(24, 28, 40, 0.28);
    padding: 22px 18px;
}

.bp-account__user {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 4px 6px 18px;
}

.bp-account__avatar {
    width: 46px;
    height: 46px;
    flex: 0 0 auto;
    border-radius: 14px;
    background: linear-gradient(135deg, #e493bc 0%, #3b62c4 100%);
    color: #fff;
    font-weight: 700;
    font-size: 19px;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: 0.5px;
}

.bp-account__user-meta {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.bp-account__user-name {
    font-weight: 600;
    font-size: 15.5px;
    line-height: 1.2;
    color: #16181d;
}

.bp-account__user-role {
    color: #9aa0ac;
    font-size: 12.5px;
    margin-top: 2px;
}

.bp-account__divider {
    display: block;
    height: 1px;
    background: #eef0f4;
    margin: 0 6px 14px;
}

.bp-account__menu {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.bp-account__menu-item {
    margin: 0;
}

.bp-account__link,
.bp-account__logout {
    display: flex;
    align-items: center;
    gap: 13px;
    width: 100%;
    padding: 11px 14px;
    border-radius: 12px;
    font-size: 14.5px;
    font-weight: 500;
    line-height: 1.2;
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease;
}

.bp-account__link {
    color: #4a4e59;
}

.bp-account__link:hover {
    background: #f5f6f8;
    color: #4a4e59;
}

.bp-account__link.is-active {
    background: #edf1fc;
    color: #2f52b0;
    font-weight: 600;
    box-shadow: inset 3px 0 0 #3b62c4;
}

.bp-account__link-icon {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    fill: none;
    stroke: #a2a8b4;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: stroke 0.15s ease;
}

.bp-account__link:hover .bp-account__link-icon {
    stroke: #6b7280;
}

.bp-account__link.is-active .bp-account__link-icon {
    stroke: #3b62c4;
}

.bp-account__link-label {
    flex: 1;
}

.bp-account__logout {
    color: #9aa0ac;
    margin-top: 0;
}

.bp-account__logout:hover {
    background: #fdf1f5;
    color: #d3699a;
}

.bp-account__logout:hover .bp-account__link-icon {
    stroke: #d3699a;
}

/* ---- Content card: every endpoint body sits in a white card... ---- */
.bp-account-page .woocommerce-MyAccount-content {
    background: #fff;
    border: 1px solid #eceef3;
    border-radius: 20px;
    box-shadow: 0 14px 34px -26px rgba(24, 28, 40, 0.3);
    padding: 26px 28px 28px;
}

/* ...except the overview, whose stat cards sit straight on the grey. */
.bp-account-overview .woocommerce-MyAccount-content {
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 0;
}

/* Section headings on the bookings/passes tabs (scoped so it doesn't hit the
   per-item <h3> titles on Tanfolyamaim / Online kurzusaim). */
.bp-account-page .woocommerce-MyAccount-content .bp-my-bookings h3 {
    font-size: 20px;
    font-weight: 600;
    margin: 0 0 20px;
    color: #16181d;
}

.bp-account-page .woocommerce-MyAccount-content section + section {
    margin-top: 28px;
}

.bp-account-page .woocommerce-MyAccount-content table.shop_table {
    border: 1px solid #eef0f4;
    border-radius: 14px;
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    width: 100%;
}

.bp-account-page .woocommerce-MyAccount-content table.shop_table thead th {
    background: #f7f8fa;
    text-transform: uppercase;
    font-size: 11.5px;
    letter-spacing: 0.6px;
    color: #9aa0ac;
    font-weight: 600;
    padding: 14px 20px;
    text-align: left;
    border: none;
}

.bp-account-page .woocommerce-MyAccount-content table.shop_table td {
    padding: 16px 20px;
    border: none;
    border-top: 1px solid #eef0f4;
    vertical-align: middle;
}

/* Remaining-sessions pill on the passes table. */
.bp-my-passes__remaining {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 11px;
    border-radius: 999px;
    background: #eef1fc;
    color: #2f52b0;
    font-weight: 600;
    font-size: 13.5px;
}

/* Desktop (≥992px): two-column dashboard — the intro spans the full width,
   the sidebar card and content card share the row below, and the sidebar
   sticks while the content scrolls. Below 992px the base rules keep the
   single-column stack (sidebar card on top, content below). */
@media (min-width: 992px) {
    .woocommerce-account .woocommerce {
        display: grid;
        grid-template-columns: 288px minmax(0, 1fr);
        grid-template-areas:
            "header header"
            "nav    content";
        column-gap: 28px;
        align-items: start;
    }

    .woocommerce-account .bp-account__header {
        grid-area: header;
    }

    .woocommerce-account .woocommerce-MyAccount-navigation {
        grid-area: nav;
        width: auto;
        margin: 0;
        position: sticky;
        top: 24px;
    }

    .woocommerce-account .woocommerce-MyAccount-content {
        grid-area: content;
        width: auto;
        margin: 0;
        min-width: 0; /* let wide tables scroll inside, not blow out the grid */
    }
}

/* Overview stat cards — white cards with a coloured icon tile. */
.bp-account__cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 20px;
    margin-bottom: 0;
}

.bp-account__card {
    background: #fff;
    border: 1px solid #eceef3;
    border-radius: 18px;
    padding: 22px 22px 24px;
    box-shadow: 0 14px 34px -26px rgba(24, 28, 40, 0.3);
    text-decoration: none;
    color: inherit;
    display: block;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.bp-account__card:hover {
    box-shadow: 0 18px 40px -24px rgba(24, 28, 40, 0.35);
    transform: translateY(-1px);
}

.bp-account__card-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    margin-bottom: 16px;
    background: #eef0f4;
}

.bp-account__card-icon svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: #4a4e59;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.bp-account__card-icon--blue {
    background: #eef1fc;
}

.bp-account__card-icon--blue svg {
    stroke: #3b62c4;
}

.bp-account__card-icon--pink {
    background: #fbeef4;
}

.bp-account__card-icon--pink svg {
    stroke: #d3699a;
}

.bp-account__card-label {
    display: block;
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: #9aa0ac;
    font-weight: 600;
}

.bp-account__card-value {
    display: block;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.5px;
    color: #16181d;
    line-height: 1.1;
    margin: 8px 0 4px;
}

.bp-account__card-value--sm {
    font-size: 22px;
}

.bp-account__card-value--muted {
    color: #9aa0ac;
}

.bp-account__card-value--pink {
    color: #d3699a;
}

.bp-account__card-hint {
    display: block;
    font-size: 13.5px;
    color: #9aa0ac;
}

.bp-account__overview-intro {
    color: #7d828e;
    font-size: 14.5px;
    line-height: 1.6;
    margin: 22px 2px 0;
}

/* Online kurzusaim tab */
.bp-account-online__empty {
    color: #6a6a6a;
}

.bp-account-online__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.bp-account-online__item {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 14px;
    padding: 18px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    flex-wrap: wrap;
}

.bp-account-online__main {
    flex: 1 1 260px;
    min-width: 0;
}

.bp-account-online__title {
    margin: 0 0 6px;
    font-size: 17px;
}

.bp-account-online__title a {
    color: #1d1d1d;
    text-decoration: none;
}

.bp-account-online__title a:hover {
    color: #2d5eb5;
}

.bp-account-online__state {
    margin: 0 0 8px;
    font-size: 13px;
    font-weight: 600;
}

.bp-account-online__state--completed {
    color: #15693f;
}

.bp-account-online__state--active {
    color: #2d5eb5;
}

.bp-account-online__progress {
    height: 8px;
    background: rgba(45, 94, 181, 0.12);
    border-radius: 999px;
    overflow: hidden;
    max-width: 420px;
}

.bp-account-online__progress-bar {
    display: block;
    height: 100%;
    background: #2d5eb5;
    border-radius: 999px;
    transition: width 0.3s ease;
}

.bp-account-online__item--completed .bp-account-online__progress-bar {
    background: #15693f;
}

.bp-account-online__actions {
    flex-shrink: 0;
}

@media (max-width: 600px) {
    .bp-account__title {
        font-size: 24px;
    }

    .bp-account-online__actions {
        width: 100%;
    }

    .bp-account-online__btn {
        width: 100%;
        text-align: center;
    }
}

/* Alumni: opt-in checkbox on course product pages */
.bp-alumni-opt-in {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 14px 0;
    font-size: 13px;
    line-height: 1.5;
    color: #4a4a4a;
    cursor: pointer;
}

.bp-alumni-opt-in input[type="checkbox"] {
    margin-top: 3px;
    flex-shrink: 0;
}

/* Alumni: public directory */
.bp-alumni-page__title {
    margin-bottom: 12px;
}

.bp-alumni-page__intro {
    margin-bottom: 28px;
}

.bp-alumni-directory__filter {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 24px;
    font-size: 14px;
}

.bp-alumni-directory__filter select {
    padding: 6px 10px;
    border: 1px solid #d6d6d6;
    border-radius: 8px;
    font-size: 14px;
}

.bp-alumni-directory__empty {
    color: #6a6a6a;
}

.bp-alumni-directory__grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
}

.bp-alumni-card {
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.bp-alumni-card__photo img {
    display: block;
    width: 100%;
    height: 200px;
    object-fit: cover;
}

.bp-alumni-card__body {
    padding: 16px 18px 18px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.bp-alumni-card__name {
    margin: 0;
    font-size: 17px;
}

.bp-alumni-card__city {
    margin: 0;
    font-size: 13px;
    color: #8a8f99;
}

.bp-alumni-card__courses {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.bp-alumni-card__courses li {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    background: rgba(45, 94, 181, 0.1);
    color: #2d5eb5;
    border-radius: 999px;
    padding: 3px 10px;
}

.bp-alumni-card__bio {
    margin: 0;
    font-size: 13px;
    color: #4a4a4a;
}

.bp-alumni-card__contact {
    margin: 4px 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    font-size: 13px;
}

.bp-alumni-card__contact a {
    color: #2d5eb5;
    text-decoration: none;
}

.bp-alumni-card__contact a:hover {
    text-decoration: underline;
}

/* Voucher redemption: expiry note */
.bp-voucher-redeem__expiry {
    margin: 10px 0 0;
    font-size: 13px;
    color: #b3214c;
}

/* Studio admin: overview dashboard panels */
/* The original overview had a single .bp-studio-admin__panels row, so the
   container never needed outer spacing — with the dashboard rows stacked
   below it, consecutive rows need the same 28px rhythm as the cards. */
.bp-studio-admin__panels + .bp-studio-admin__panels {
    margin-top: 28px;
}

.bp-studio-admin__panel--wide {
    grid-column: 1 / -1;
}

.bp-studio-admin__panel-summary {
    margin: 0 0 12px;
    font-size: 13px;
    color: #6a6a6a;
}

.bp-studio-admin__panel-subtitle {
    margin: 14px 0 8px;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #8a8f99;
}

.bp-studio-admin__panel-hint {
    margin: 10px 0 0;
    font-size: 12px;
    color: #8a8f99;
}

.bp-studio-admin__occupancy-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.bp-studio-admin__occupancy-link {
    display: grid;
    grid-template-columns: 130px 1fr 120px 56px;
    gap: 12px;
    align-items: center;
    padding: 7px 4px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    color: inherit;
    text-decoration: none;
}

.bp-studio-admin__occupancy-link:hover {
    background: rgba(0, 0, 0, 0.025);
}

.bp-studio-admin__occupancy-when {
    font-size: 13px;
    color: #4a4a4a;
    white-space: nowrap;
}

.bp-studio-admin__occupancy-title {
    font-size: 13px;
    font-weight: 600;
}

.bp-studio-admin__occupancy-title small {
    font-weight: 400;
    color: #8a8f99;
}

.bp-studio-admin__occupancy-bar {
    display: block;
    height: 8px;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.07);
    overflow: hidden;
}

.bp-studio-admin__occupancy-bar-fill {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: #228b5c;
}

.bp-studio-admin__occupancy-row--full .bp-studio-admin__occupancy-bar-fill {
    background: #c93164;
}

.bp-studio-admin__occupancy-row--empty .bp-studio-admin__occupancy-count {
    color: #8a8f99;
}

.bp-studio-admin__occupancy-count {
    font-size: 13px;
    text-align: right;
    white-space: nowrap;
}

.bp-studio-admin__statlist {
    list-style: none;
    margin: 0;
    padding: 0;
}

.bp-studio-admin__statlist li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 2px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
    font-size: 13px;
}

.bp-studio-admin__statlist strong {
    font-size: 15px;
}

.bp-studio-admin__export-link {
    display: inline-block;
    margin-left: auto;
    font-size: 13px;
    text-decoration: none;
    border: 1px solid #b8b8b8;
    border-radius: 6px;
    padding: 6px 12px;
    color: #3a3a3a;
    background: #fff;
}

.bp-studio-admin__export-link:hover {
    background: #f1f1f1;
}

@media (max-width: 720px) {
    .bp-studio-admin__occupancy-link {
        grid-template-columns: 1fr 56px;
    }

    .bp-studio-admin__occupancy-bar {
        display: none;
    }
}

/* Voucher admin actions */
.bp-voucher-actions {
    white-space: nowrap;
}

.bp-voucher-actions__form {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 2px 4px 2px 0;
}

.bp-voucher-actions__date {
    font-size: 12px;
    padding: 3px 6px;
    border: 1px solid #d6d6d6;
    border-radius: 6px;
}

.bp-voucher-actions__btn {
    appearance: none;
    border: 1px solid #b8b8b8;
    background: #fff;
    color: #3a3a3a;
    border-radius: 6px;
    padding: 4px 10px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.bp-voucher-actions__btn:hover {
    background: #f1f1f1;
}

.bp-voucher-actions__btn--danger {
    border-color: #c93164;
    color: #b3214c;
}

.bp-voucher-actions__btn--danger:hover {
    background: #c93164;
    color: #fff;
}

/* Booking widget: cancellation policy note */
.bp-booking-widget__policy {
    margin: 4px 0 14px;
    font-size: 13px;
    color: #6a6a6a;
}

/* My Account · Foglalásaim */
.bp-my-bookings section {
    margin-bottom: 32px;
}

.bp-my-bookings h3 {
    margin-bottom: 12px;
    margin-top: 12px;
}

p.bp-my-courses__empty,
p.bp-account-online__empty {
   margin-bottom: 12px;
    margin-top: 12px;
}

.bp-my-bookings__empty {
    color: #6a6a6a;
}

.bp-my-bookings__table td {
    vertical-align: middle;
}

.bp-my-bookings__actions-col form {
    margin: 0;
}

.bp-my-bookings__cancel-btn {
    font-size: 13px;
}

.bp-my-bookings__hint {
    font-size: 12px;
    color: #8a8f99;
}

.bp-my-bookings__row--cancelled td {
    color: #8a8f99;
}

/* Pagination */
.bp-studio-admin__pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 14px;
    margin-top: 18px;
    font-size: 13px;
    color: #4a4a4a;
}

.bp-studio-admin__pagination a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 999px;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.12);
    color: #2d5eb5;
    text-decoration: none;
    font-weight: 700;
}

.bp-studio-admin__pagination a:hover {
    background: #2d5eb5;
    color: #fff;
    border-color: #2d5eb5;
}

/* Booking calendar layout: month grid on the left, selected day's
   session list on the right. Stacks vertically on narrow screens. */
.bp-booking-cal-layout {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 22px;
    align-items: start;
}

.bp-booking-cal {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 14px;
    padding: 14px 14px 12px;
    box-shadow: 0 2px 8px rgba(20, 24, 60, 0.04);
    position: sticky;
    top: 20px;
}

.bp-booking-cal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 0 4px 10px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.bp-booking-cal__nav {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 8px;
    color: #2d5eb5;
    text-decoration: none;
    font-size: 20px;
    line-height: 1;
}
.bp-booking-cal__nav:hover {
    background: rgba(45, 94, 181, 0.08);
}
.bp-booking-cal__month-label {
    font-size: 15px;
    color: #1d1d1d;
    text-transform: capitalize;
}

.bp-booking-cal__grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    padding: 10px 0 4px;
}
.bp-booking-cal__wd {
    text-align: center;
    font-size: 11px;
    font-weight: 700;
    color: #8a8f99;
    padding: 4px 0;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.bp-booking-cal__day {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 1 / 1;
    border-radius: 8px;
    color: #1d1d1d;
    text-decoration: none;
    font-size: 13px;
    font-weight: 500;
    transition: background 0.1s ease, color 0.1s ease;
}
.bp-booking-cal__day:hover {
    background: rgba(45, 94, 181, 0.08);
    color: #2d5eb5;
}
.bp-booking-cal__day--blank {
    pointer-events: none;
}
.bp-booking-cal__day--today {
    color: #d96fa2;
    font-weight: 700;
}
.bp-booking-cal__day--selected {
    background: #2d5eb5;
    color: #fff !important;
    font-weight: 700;
}
.bp-booking-cal__day--selected:hover {
    background: #244d98;
    color: #fff;
}
.bp-booking-cal__day--has .bp-booking-cal__day-dot {
    position: absolute;
    bottom: 4px;
    left: 50%;
    transform: translateX(-50%);
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #d96fa2;
}
.bp-booking-cal__day--selected .bp-booking-cal__day-dot {
    background: #fff;
}

.bp-booking-cal__footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 4px 0;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    margin-top: 6px;
    font-size: 12px;
}
.bp-booking-cal__today-link,
.bp-booking-cal__all-link {
    color: #2d5eb5;
    text-decoration: none;
    font-weight: 600;
}
.bp-booking-cal__today-link:hover,
.bp-booking-cal__all-link:hover {
    text-decoration: underline;
}

.bp-booking-day {
    position: relative;
    min-height: 180px;
}
.bp-booking-day__header {
    margin: 0 0 14px;
}
.bp-booking-day__title {
    margin: 0 0 4px;
    font-size: 18px;
    font-weight: 700;
    color: #2d5eb5;
    text-transform: capitalize;
}
.bp-booking-day__count {
    margin: 0;
    font-size: 13px;
    color: #6b7280;
}

/* AJAX day-fetch in flight: translucent overlay dims the content and
   a centered spinner gives "something is happening" feedback. Done as
   two pseudo-elements (not `opacity` on the parent) so the spinner
   stays fully opaque — `opacity` on a parent creates a stacking
   context that children can't escape. Pointer events on the overlay
   are disabled so clicks on calendar days still go through. */
.bp-booking-day--loading::after {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.7);
    pointer-events: none;
    z-index: 1;
}
.bp-booking-day--loading::before {
    content: "";
    position: absolute;
    top: 60px;
    left: calc(50% - 18px);
    width: 36px;
    height: 36px;
    border: 3px solid rgba(45, 94, 181, 0.18);
    border-top-color: #2d5eb5;
    border-radius: 50%;
    animation: bp-booking-spin 0.7s linear infinite;
    pointer-events: none;
    z-index: 2;
}
@keyframes bp-booking-spin {
    to { transform: rotate(360deg); }
}

@media (max-width: 880px) {
    .bp-booking-cal-layout {
        grid-template-columns: 1fr;
    }
    .bp-booking-cal {
        position: static;
    }
}

/* Session-occurrence cards on the Bookings tab default view.
   Each card = one session × one occurrence, click-through to the
   drill-in roster for that occurrence. */
.bp-studio-admin__session-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.bp-studio-admin__session-card {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(20, 24, 60, 0.04);
    overflow: hidden;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.bp-studio-admin__session-card:hover {
    box-shadow: 0 6px 16px rgba(20, 24, 60, 0.08);
    transform: translateY(-1px);
}

.bp-studio-admin__session-card-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 14px 18px;
    color: #1d1d1d;
    text-decoration: none;
}
.bp-studio-admin__session-card-link:focus {
    outline: 2px solid #2d5eb5;
    outline-offset: -2px;
}

.bp-studio-admin__session-card-main {
    flex: 1 1 auto;
    min-width: 0;
}
.bp-studio-admin__session-card-title {
    font-size: 15px;
    font-weight: 700;
    color: #2d5eb5;
    margin: 0 0 4px;
}
.bp-studio-admin__session-card-meta {
    font-size: 13px;
    color: #50575e;
    line-height: 1.4;
}

.bp-studio-admin__session-card-capacity {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(45, 94, 181, 0.08);
    color: #2d5eb5;
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
}
.bp-studio-admin__session-card-capacity strong {
    font-size: 16px;
    font-weight: 800;
}
.bp-studio-admin__session-card-capacity--full {
    background: rgba(201, 49, 100, 0.12);
    color: #b3214c;
}
.bp-studio-admin__session-card-arrow {
    font-size: 18px;
    line-height: 1;
    opacity: 0.6;
}

/* Drill-in header (single-occurrence roster). */
.bp-studio-admin__back-link {
    margin: 0 0 12px;
    font-size: 13px;
}
.bp-studio-admin__back-link a {
    color: #2d5eb5;
    text-decoration: none;
    font-weight: 600;
}
.bp-studio-admin__back-link a:hover {
    text-decoration: underline;
}
.bp-studio-admin__detail-header {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 12px;
    padding: 16px 20px;
    margin: 0 0 18px;
    box-shadow: 0 2px 8px rgba(20, 24, 60, 0.04);
}
.bp-studio-admin__detail-title {
    margin: 0 0 6px;
    font-size: 18px;
    font-weight: 700;
    color: #2d5eb5;
}
.bp-studio-admin__detail-meta {
    margin: 0 0 8px;
    font-size: 13px;
    color: #50575e;
}
.bp-studio-admin__detail-capacity {
    margin: 0;
    font-size: 13px;
    font-weight: 700;
    color: #1d1d1d;
}

/* Mobile: stack the card link's flex children */
@media (max-width: 600px) {
    .bp-studio-admin__session-card-link {
        flex-direction: column;
        align-items: flex-start;
        gap: 10px;
    }
    .bp-studio-admin__session-card-capacity {
        align-self: flex-start;
    }
}

/* Mobile: tables stack into cards via data-label */
@media (max-width: 767.98px) {
    .bp-studio-admin__table thead { display: none; }
    .bp-studio-admin__table,
    .bp-studio-admin__table tbody,
    .bp-studio-admin__table tbody tr,
    .bp-studio-admin__table tbody td {
        display: block;
        width: 100%;
    }
    .bp-studio-admin__table tbody tr {
        padding: 12px 14px;
        border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    }
    .bp-studio-admin__table tbody tr:last-child {
        border-bottom: 0;
    }
    .bp-studio-admin__table tbody td {
        padding: 4px 0;
        border-bottom: 0;
        display: flex;
        justify-content: space-between;
        gap: 12px;
    }
    .bp-studio-admin__table tbody td::before {
        content: attr(data-label);
        font-size: 11px;
        text-transform: uppercase;
        font-weight: 700;
        color: #8a8f99;
        letter-spacing: 0.04em;
    }
    /* Declarations list: history sub-rows stack like everything else */
    .bp-declaration__toggle-col {
        width: 100%;
    }
    .bp-declaration__history-row > td {
        padding: 8px 0 0;
    }
    .bp-declaration__history-table {
        box-shadow: none;
        border: 1px solid rgba(0, 0, 0, 0.08);
    }
    .bp-declaration__history-table tbody tr {
        padding: 8px 12px;
    }
}


/* Attendance roster view inside studio-admin. Each class occurrence gets
 * its own card; the bookings list inside is one row per client with a
 * pill + three action buttons. */
.bp-attendance__quick-dates {
    display: inline-flex;
    gap: 6px;
    align-items: center;
}

.bp-attendance__quick-date {
    padding: 7px 12px;
    border-radius: 999px;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.12);
    color: #4a4a4a;
    font-size: 12px;
    font-weight: 600;
    text-decoration: none;
}

.bp-attendance__quick-date:hover {
    border-color: #2d5eb5;
    color: #2d5eb5;
}

.bp-attendance__quick-date--active {
    background: #2d5eb5;
    color: #fff;
    border-color: #2d5eb5;
}

.bp-attendance__empty {
    background: #fff;
    padding: 30px;
    text-align: center;
    color: #8a8f99;
    border-radius: 14px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
}

.bp-attendance__class {
    background: #fff;
    border-radius: 14px;
    padding: 18px 20px;
    margin-bottom: 16px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
}

.bp-attendance__class-header {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: flex-start;
    margin-bottom: 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    flex-wrap: wrap;
}

.bp-attendance__class-title {
    margin: 0 0 4px;
    font-size: 16px;
    font-weight: 700;
    color: #1d1d1d;
}

.bp-attendance__class-meta {
    margin: 0;
    color: #6b6f78;
    font-size: 12px;
}

.bp-attendance__class-stats {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    align-items: center;
}

.bp-attendance__stat {
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(45, 94, 181, 0.1);
    color: #2d5eb5;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.bp-attendance__stat--attended {
    background: rgba(34, 139, 92, 0.15);
    color: #15693f;
}

.bp-attendance__stat--no_show {
    background: rgba(201, 49, 100, 0.15);
    color: #b3214c;
}

.bp-attendance__stat--pending {
    background: rgba(0, 0, 0, 0.06);
    color: #4a4a4a;
}

.bp-attendance__roster {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.bp-attendance__row {
    display: grid;
    grid-template-columns: 1fr auto auto;
    gap: 16px;
    align-items: center;
    padding: 10px 12px;
    border-radius: 10px;
    background: #fff;
    transition: background 0.15s ease, opacity 0.15s ease;
}

.bp-attendance__row:hover {
    background: rgba(45, 94, 181, 0.04);
}

.bp-attendance__row--attended {
    background: rgba(34, 139, 92, 0.05);
}

.bp-attendance__row--no_show {
    background: rgba(201, 49, 100, 0.05);
}

.bp-attendance__row--loading {
    opacity: 0.55;
    pointer-events: none;
}

.bp-attendance__row-meta {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.bp-attendance__row-name {
    font-size: 14px;
    font-weight: 700;
    color: #1d1d1d;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bp-attendance__row-contact {
    font-size: 12px;
    color: #6b6f78;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bp-attendance__pill {
    display: inline-flex;
    align-items: center;
    padding: 3px 12px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
    min-width: 110px;
    justify-content: center;
}

.bp-attendance__pill--not_recorded {
    background: rgba(0, 0, 0, 0.06);
    color: #4a4a4a;
}

.bp-attendance__pill--attended {
    background: rgba(34, 139, 92, 0.15);
    color: #15693f;
}

.bp-attendance__pill--no_show {
    background: rgba(201, 49, 100, 0.15);
    color: #b3214c;
}

.bp-attendance__row-actions {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.bp-attendance__btn {
    padding: 6px 12px;
    border-radius: 999px;
    border: 1px solid rgba(0, 0, 0, 0.12);
    background: #fff;
    color: #4a4a4a;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.bp-attendance__btn:hover {
    border-color: #2d5eb5;
    color: #2d5eb5;
}

.bp-attendance__btn--attended:hover {
    border-color: #15693f;
    color: #15693f;
}

.bp-attendance__btn--no_show:hover {
    border-color: #b3214c;
    color: #b3214c;
}

.bp-attendance__btn--active {
    background: #1d1d1d;
    color: #fff;
    border-color: #1d1d1d;
}

.bp-attendance__btn--attended.bp-attendance__btn--active {
    background: #15693f;
    border-color: #15693f;
    color: #fff;
}

.bp-attendance__btn--no_show.bp-attendance__btn--active {
    background: #b3214c;
    border-color: #b3214c;
    color: #fff;
}

@media (max-width: 767.98px) {
    .bp-attendance__row {
        grid-template-columns: 1fr;
        gap: 8px;
    }
    .bp-attendance__pill {
        align-self: flex-start;
    }
    .bp-attendance__row-actions {
        justify-content: flex-start;
    }
}


/* =============================================================
 * WooCommerce — Cart + Checkout brand restyle (CSS-only).
 *
 * Targets the default WC templates (no template overrides) and reuses
 * the same design tokens as the rest of the theme: navy + teal + pink,
 * 12-14px radii, soft card shadows, system rounded inputs.
 * ============================================================= */

/* ---- Shared page wrapper ----------------------------------
 * page.php now wraps everything in `.bp-page > .container`, so the
 * `.woocommerce` shortcode wrapper no longer needs its own max-width.
 * We just give the page a little vertical breathing room and inherit
 * the theme's typography. */
.bp-page {
    padding: 32px 0 64px;
    color: #1d1d1d;
    font-size: 14px;
    line-height: 1.5;
}

.woocommerce-cart .woocommerce,
.woocommerce-checkout .woocommerce,
.woocommerce-account .woocommerce {
    color: #1d1d1d;
    font-size: 14px;
    line-height: 1.5;
}

.woocommerce-cart h1.entry-title,
.woocommerce-checkout h1.entry-title,
.woocommerce-cart .page-title,
.woocommerce-checkout .page-title {
    font-size: 28px;
    font-weight: 700;
    margin: 0 0 18px;
    color: #1d1d1d;
}

/* ---- Notices: info / success / error / form messages ------ */

.woocommerce .woocommerce-message,
.woocommerce .woocommerce-info,
.woocommerce .woocommerce-error,
.woocommerce .woocommerce-NoticeGroup,
.woocommerce-notices-wrapper > * {
    list-style: none;
    margin: 0 0 18px;
    padding: 14px 18px 14px 48px;
    border-radius: 12px;
    border: 0;
    background: rgba(45, 94, 181, 0.08);
    color: #1d1d1d;
    font-size: 14px;
    box-shadow: none;
    position: relative;
}

.woocommerce .woocommerce-message::before,
.woocommerce .woocommerce-info::before,
.woocommerce .woocommerce-error::before {
    position: absolute;
    left: 18px;
    top: 14px;
    color: #2d5eb5;
}

.woocommerce .woocommerce-message {
    background: rgba(34, 139, 92, 0.12);
}
.woocommerce .woocommerce-message::before {
    color: #15693f;
}

.woocommerce .woocommerce-error {
    background: rgba(201, 49, 100, 0.12);
}
.woocommerce .woocommerce-error::before {
    color: #b3214c;
}

.woocommerce .woocommerce-message a,
.woocommerce .woocommerce-info a,
.woocommerce .woocommerce-error a {
    color: #2d5eb5;
    font-weight: 600;
}

/* ---- Shared form inputs ----------------------------------- */

.woocommerce form .form-row label {
    display: block;
    font-size: 12px;
    font-weight: 700;
    color: #1d1d1d;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.woocommerce form .form-row label .required,
.woocommerce form .form-row label .optional {
    color: #b3214c;
    margin-left: 2px;
    text-decoration: none;
}

.woocommerce form .form-row .input-text,
.woocommerce form .form-row select,
.woocommerce form .form-row textarea,
.woocommerce-cart .coupon input[type="text"],
.woocommerce input[type="text"],
.woocommerce input[type="email"],
.woocommerce input[type="tel"],
.woocommerce input[type="password"],
.woocommerce input[type="number"],
.woocommerce textarea,
.woocommerce select {
    width: 100%;
    padding: 11px 14px;
    border: 1px solid rgba(0, 0, 0, 0.14);
    border-radius: 10px;
    background: #ffffff;
    color: #1d1d1d;
    font-size: 14px;
    font-family: inherit;
    line-height: 1.4;
    transition: border-color 0.12s ease, box-shadow 0.12s ease;
}

.woocommerce form .form-row .input-text:focus,
.woocommerce form .form-row select:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce input[type="text"]:focus,
.woocommerce input[type="email"]:focus,
.woocommerce input[type="tel"]:focus,
.woocommerce input[type="password"]:focus,
.woocommerce input[type="number"]:focus,
.woocommerce textarea:focus,
.woocommerce select:focus {
    outline: 0;
    border-color: #2d5eb5;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.16);
}

.woocommerce form .form-row .description,
.woocommerce form .form-row .input-text + small {
    font-size: 12px;
    color: #6b6f78;
    margin-top: 4px;
}

.woocommerce .select2-container--default .select2-selection--single {
    height: 42px;
    border: 1px solid rgba(0, 0, 0, 0.14);
    border-radius: 10px;
    background: #ffffff;
}

.woocommerce .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 40px;
    padding-left: 12px;
    color: #1d1d1d;
}

.woocommerce .select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 40px;
    right: 6px;
}

.woocommerce .select2-container--default.select2-container--focus .select2-selection {
    border-color: #2d5eb5;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.16);
}

.woocommerce .form-row.woocommerce-validated input.input-text {
    border-color: rgba(34, 139, 92, 0.5);
}
.woocommerce .form-row.woocommerce-invalid input.input-text {
    border-color: rgba(201, 49, 100, 0.55);
}

/* ---- Shared buttons --------------------------------------- */

.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce-page a.button,
.woocommerce-page button.button,
.woocommerce-page input.button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 44px;
    padding: 0 24px;
    border: 0;
    border-radius: 999px;
    background: #1d2746;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.05s ease;
    line-height: 1;
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce-page a.button:hover,
.woocommerce-page button.button:hover,
.woocommerce-page input.button:hover {
    background: #0f1830;
    color: #ffffff;
}

/* Primary CTA — pink ribbon look: proceed to checkout, place order, login submit. */
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce a.button.checkout-button,
.woocommerce #place_order,
.woocommerce-page button.button.alt,
.woocommerce-page input.button.alt {
    background: #d96fa2;
    color: #ffffff;
    min-height: 48px;
    padding: 0 32px;
    font-size: 15px;
}

.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce a.button.checkout-button:hover,
.woocommerce #place_order:hover,
.woocommerce-page button.button.alt:hover,
.woocommerce-page input.button.alt:hover {
    background: #c45a8e;
}

/* Secondary outlined — apply coupon, update cart, return to shop. */
.woocommerce-cart .actions input[name="update_cart"],
.woocommerce .coupon button[name="apply_coupon"],
.woocommerce .return-to-shop a.wc-backward {
    background: #ffffff;
    color: #2d5eb5;
    border: 1px solid #2d5eb5;
    min-height: 44px;
}

.woocommerce-cart .actions input[name="update_cart"]:hover,
.woocommerce .coupon button[name="apply_coupon"]:hover,
.woocommerce .return-to-shop a.wc-backward:hover {
    background: #2d5eb5;
    color: #ffffff;
}

/* ---- Cart page -------------------------------------------- */

.woocommerce-cart-form {
    background: #ffffff;
    border-radius: 14px;
    padding: 20px 22px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
}

.woocommerce table.shop_table.cart {
    width: 100%;
    border: 0;
    border-collapse: collapse;
    margin: 0;
    border-radius: 0;
    background: transparent;
}

.woocommerce table.shop_table.cart thead th {
    background: transparent;
    color: #6b6f78;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    padding: 10px 12px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    text-align: left;
}

.woocommerce table.shop_table.cart tbody td {
    padding: 14px 12px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    vertical-align: middle;
    color: #1d1d1d;
}

.woocommerce table.shop_table.cart tbody tr:last-child td {
    border-bottom: 0;
}

.woocommerce table.shop_table.cart td.product-thumbnail img {
    width: 64px;
    height: 64px;
    object-fit: cover;
    border-radius: 10px;
}

.woocommerce table.shop_table.cart td.product-name a {
    color: #1d1d1d;
    font-weight: 700;
    text-decoration: none;
}

.woocommerce table.shop_table.cart td.product-name a:hover {
    color: #2d5eb5;
}

.woocommerce table.shop_table.cart td.product-price,
.woocommerce table.shop_table.cart td.product-subtotal {
    font-weight: 700;
    color: #1d1d1d;
}

.woocommerce table.shop_table.cart td.product-quantity .qty {
    width: 70px;
    text-align: center;
    padding: 8px 10px;
}

.woocommerce table.shop_table.cart td.product-remove a.remove {
    width: 28px;
    height: 28px;
    line-height: 26px;
    border-radius: 999px;
    background: rgba(201, 49, 100, 0.1);
    color: #b3214c;
    font-size: 18px;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.woocommerce table.shop_table.cart td.product-remove a.remove:hover {
    background: #b3214c;
    color: #ffffff;
}

/* Cart actions row (coupon + update cart) */
.woocommerce-cart-form .actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: stretch;
    padding: 18px 0 4px;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    margin-top: 8px;
}

.woocommerce-cart-form .actions .coupon {
    display: flex;
    flex: 1;
    gap: 8px;
    align-items: stretch;
    min-width: 260px;
}

.woocommerce-cart-form .actions .coupon label {
    display: none;
}

.woocommerce-cart-form .actions .coupon input[type="text"] {
    flex: 1;
    min-width: 0;
}

/* Cart totals box */
.woocommerce .cart-collaterals {
    margin-top: 24px;
}

.woocommerce .cart-collaterals .cart_totals {
    background: #ffffff;
    border-radius: 14px;
    padding: 20px 22px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
    max-width: 480px;
    margin-left: auto;
}

.woocommerce .cart_totals h2 {
    margin: 0 0 14px;
    font-size: 18px;
    font-weight: 700;
    color: #1d1d1d;
}

.woocommerce .cart_totals table.shop_table {
    width: 100%;
    border: 0;
    border-radius: 0;
    background: transparent;
    margin: 0;
}

.woocommerce .cart_totals table.shop_table th,
.woocommerce .cart_totals table.shop_table td {
    padding: 10px 0;
    border: 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    background: transparent;
}

.woocommerce .cart_totals table.shop_table th {
    font-weight: 600;
    color: #4a4a4a;
}

.woocommerce .cart_totals table.shop_table tr.order-total th,
.woocommerce .cart_totals table.shop_table tr.order-total td {
    font-size: 16px;
    font-weight: 700;
    color: #1d1d1d;
    border-bottom: 0;
    padding-top: 14px;
}

.woocommerce .wc-proceed-to-checkout {
    margin-top: 18px;
    padding: 0;
}

.woocommerce .wc-proceed-to-checkout a.checkout-button {
    width: 100%;
}

/* Empty cart state */
.woocommerce .cart-empty {
    background: #ffffff;
    border-radius: 14px;
    padding: 32px;
    text-align: center;
    color: #6b6f78;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
}

.woocommerce .return-to-shop {
    text-align: center;
    margin-top: 12px;
}

/* ---- Checkout page ---------------------------------------- */

.woocommerce-checkout .woocommerce-form-coupon-toggle,
.woocommerce-checkout .woocommerce-form-login-toggle {
    margin-bottom: 18px;
}

.woocommerce-checkout .woocommerce-form-coupon,
.woocommerce-checkout .woocommerce-form-login {
    background: #ffffff;
    border-radius: 12px;
    padding: 18px 20px;
    margin-bottom: 18px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
}

.woocommerce-checkout .col2-set {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
    width: 100%;
}

.woocommerce-checkout .col2-set .col-1,
.woocommerce-checkout .col2-set .col-2 {
    width: 100%;
    float: none;
    background: #ffffff;
    border-radius: 14px;
    padding: 22px 24px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
}

.woocommerce-checkout h3 {
    margin: 0 0 14px;
    font-size: 18px;
    font-weight: 700;
    color: #1d1d1d;
}

.woocommerce-checkout .woocommerce-billing-fields h3,
.woocommerce-checkout .woocommerce-shipping-fields h3,
.woocommerce-checkout .woocommerce-additional-fields h3 {
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    margin-bottom: 18px;
}

.woocommerce-checkout #order_review_heading {
    margin: 32px 0 14px;
    font-size: 20px;
    font-weight: 700;
    color: #1d1d1d;
}

.woocommerce-checkout #order_review {
    background: #ffffff;
    border-radius: 14px;
    padding: 22px 24px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.05);
}

.woocommerce-checkout-review-order table.shop_table {
    width: 100%;
    border: 0;
    background: transparent;
}

.woocommerce-checkout-review-order table.shop_table th,
.woocommerce-checkout-review-order table.shop_table td {
    padding: 10px 0;
    border: 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    background: transparent;
    color: #1d1d1d;
}

.woocommerce-checkout-review-order table.shop_table thead th {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #6b6f78;
}

.woocommerce-checkout-review-order table.shop_table tfoot tr.order-total th,
.woocommerce-checkout-review-order table.shop_table tfoot tr.order-total td {
    font-size: 16px;
    font-weight: 700;
    padding-top: 14px;
    border-bottom: 0;
}

/* Payment methods */
.woocommerce-checkout #payment {
    background: transparent;
    border-radius: 0;
    margin-top: 18px;
}

.woocommerce-checkout #payment ul.payment_methods {
    background: rgba(45, 94, 181, 0.04);
    border: 1px solid rgba(45, 94, 181, 0.12);
    border-radius: 12px;
    padding: 14px 16px;
    margin: 0;
    list-style: none;
}

.woocommerce-checkout #payment ul.payment_methods li.wc_payment_method {
    margin: 0;
    padding: 8px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.woocommerce-checkout #payment ul.payment_methods li.wc_payment_method:last-child {
    border-bottom: 0;
}

.woocommerce-checkout #payment ul.payment_methods li.wc_payment_method label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: #1d1d1d;
    cursor: pointer;
}

.woocommerce-checkout #payment ul.payment_methods li.wc_payment_method .payment_box {
    background: #ffffff;
    border-radius: 10px;
    padding: 12px 14px;
    margin: 10px 0 4px;
    color: #4a4a4a;
    font-size: 13px;
    line-height: 1.5;
    border: 1px solid rgba(0, 0, 0, 0.06);
}

.woocommerce-checkout #payment ul.payment_methods li.wc_payment_method .payment_box::before {
    display: none;
}

.woocommerce-checkout #payment div.form-row.place-order {
    background: transparent;
    padding: 18px 0 0;
    margin: 0;
}

.woocommerce-checkout #payment #place_order {
    width: 100%;
}

/* Terms checkbox */
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper {
    margin: 12px 0;
}

.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper .form-row {
    margin: 0;
}

.woocommerce-checkout .woocommerce-form__label-for-checkbox {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 13px;
    color: #4a4a4a;
    cursor: pointer;
}

.woocommerce-checkout .woocommerce-form__input-checkbox {
    margin-top: 3px;
    flex: 0 0 auto;
}

/* ---- Mobile collapse -------------------------------------- */

@media (max-width: 767.98px) {
    .woocommerce-cart .woocommerce,
    .woocommerce-checkout .woocommerce {
        margin: 20px auto 48px;
    }

    .woocommerce-cart-form,
    .woocommerce .cart-collaterals .cart_totals,
    .woocommerce-checkout .col2-set .col-1,
    .woocommerce-checkout .col2-set .col-2,
    .woocommerce-checkout #order_review {
        padding: 16px 14px;
    }

    .woocommerce-checkout .col2-set {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .woocommerce .cart-collaterals .cart_totals {
        max-width: none;
    }

    /* Woo emits data-title on td for mobile fallback */
    .woocommerce table.shop_table.cart thead {
        display: none;
    }

    .woocommerce table.shop_table.cart,
    .woocommerce table.shop_table.cart tbody,
    .woocommerce table.shop_table.cart tr,
    .woocommerce table.shop_table.cart td {
        display: block;
        width: 100%;
    }

    .woocommerce table.shop_table.cart tr {
        padding: 14px 0;
        border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    }

    .woocommerce table.shop_table.cart td {
        padding: 6px 0;
        border-bottom: 0;
        display: flex;
        justify-content: space-between;
        gap: 12px;
        text-align: right;
    }

    .woocommerce table.shop_table.cart td::before {
        content: attr(data-title);
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        color: #6b6f78;
        font-weight: 700;
        text-align: left;
    }

    .woocommerce table.shop_table.cart td.product-thumbnail {
        justify-content: flex-start;
    }

    .woocommerce-cart-form .actions {
        flex-direction: column;
        gap: 8px;
    }

    .woocommerce-cart-form .actions .coupon {
        flex-direction: column;
        min-width: 0;
        width: 100%;
    }
}


/* =============================================================
 * Course product page — hibrid slot picker + in-person info block.
 * Both render inside the WC add-to-cart form above the button, against
 * the dark hero gradient on the studio class detail layout, so they use
 * a light surface treatment matching the booking widget tab.
 * ============================================================= */

.bp-course-picker,
.bp-course-in-person {
    background: rgba(255, 255, 255, 0.96);
    color: #1d1d1d;
    border-radius: 14px;
    padding: 18px 20px;
    margin: 16px 0 18px;
    box-shadow: 0 4px 12px rgba(20, 24, 60, 0.08);
}

.bp-course-picker__title,
.bp-course-in-person__title {
    margin: 0 0 8px;
    font-size: 16px;
    font-weight: 700;
    color: #2d5eb5;
}

.bp-course-picker__lead {
    margin: 0 0 14px;
    color: #4a4a4a;
    font-size: 13px;
    line-height: 1.5;
}

/* Reveal button — mirrors the booking widget CTA */
.bp-course-picker__toggle {
    appearance: none;
    border: 0;
    background: #2d5eb5;
    color: #fff;
    border-radius: 999px;
    padding: 11px 22px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease;
}

.bp-course-picker__toggle:hover:not([disabled]) {
    background: #244d98;
}

.bp-course-picker__toggle[disabled] {
    background: #b6bcc6;
    cursor: not-allowed;
}

.bp-course-picker__selected {
    margin: 12px 0 0;
    font-size: 13px;
    color: #4a4a4a;
}

.bp-course-picker__selected strong {
    color: #2d5eb5;
}

.bp-course-picker__empty {
    margin: 12px 0 0;
    font-size: 13px;
    color: #b3214c;
}

.bp-course-picker__panel {
    margin-top: 14px;
}

/* Slot pills */
.bp-course-picker__pills {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 10px;
}

.bp-course-picker__pill {
    display: flex;
    flex-direction: column;
    gap: 3px;
    height: 100%;
    padding: 12px 14px;
    border: 1px solid rgba(0, 0, 0, 0.12);
    border-radius: 12px;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}

.bp-course-picker__pill:hover:not(.bp-course-picker__pill--disabled) {
    border-color: #2d5eb5;
    background: rgba(45, 94, 181, 0.04);
}

.bp-course-picker__pill--active {
    border-color: #2d5eb5;
    background: rgba(45, 94, 181, 0.08);
    box-shadow: 0 0 0 1px #2d5eb5 inset;
}

.bp-course-picker__pill--disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* The radio drives form submission but the pill IS the control. */
.bp-course-picker__pill input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    pointer-events: none;
}

.bp-course-picker__pill-when {
    font-weight: 700;
    color: #2d5eb5;
    font-size: 14px;
}

.bp-course-picker__pill-meta {
    color: #4a4a4a;
    font-size: 13px;
    line-height: 1.4;
}

.bp-course-picker__pill-seats {
    color: #6b6f78;
    font-size: 12px;
    font-weight: 600;
}

/* Add-to-cart gated until a hibrid slot is chosen */
.single_add_to_cart_button.bp-course-cart-disabled {
    opacity: 0.5;
    pointer-events: none;
}

/* Course curriculum tab (on the product page) */
.bp-course-curriculum__section {
    margin-bottom: 22px;
}

.bp-course-curriculum__section-title {
    margin: 0 0 10px;
    font-size: 16px;
    font-weight: 700;
    color: #2d5eb5;
}

.bp-course-curriculum__items {
    list-style: none;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 10px;
    overflow: hidden;
}

.bp-course-curriculum__item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    font-size: 14px;
}

.bp-course-curriculum__item:last-child {
    border-bottom: 0;
}

.bp-course-curriculum__item-title {
    flex: 1 1 auto;
}

.bp-course-curriculum__item-type {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #6b6f78;
}

.bp-course-curriculum__item-preview {
    font-size: 11px;
    font-weight: 700;
    color: #15693f;
    background: rgba(34, 139, 92, 0.12);
    border-radius: 999px;
    padding: 2px 8px;
}

/* In-person info — read-only fact list */
.bp-course-in-person__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px 18px;
}

.bp-course-in-person__list li {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.bp-course-in-person__label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b6f78;
    font-weight: 700;
}

.bp-course-in-person__value {
    font-size: 14px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-course-in-person__notice {
    margin: 12px 0 0;
    padding: 8px 12px;
    border-radius: 8px;
    background: rgba(201, 49, 100, 0.1);
    color: #b3214c;
    font-size: 13px;
    font-weight: 600;
}

/* =============================================================
 * Course gift form — toggle + recipient fields on course product
 * pages. Lives inside the WC add-to-cart form via the
 * `woocommerce_before_add_to_cart_button` hook. CSS-only show/hide
 * via `:has(input:checked)` — no JS needed.
 * ============================================================= */
.bp-course-gift {
    background: rgba(255, 255, 255, 0.96);
    border: 1px dashed rgba(45, 94, 181, 0.32);
    border-radius: 14px;
    padding: 14px 18px;
    margin: 14px 0 18px;
}

.bp-course-gift__toggle {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    font-weight: 600;
    color: #2d5eb5;
    cursor: pointer;
}

.bp-course-gift__checkbox {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #d96fa2;
    cursor: pointer;
}

.bp-course-gift__toggle-label {
    line-height: 1.3;
}

.bp-course-gift__fields {
    display: none;
    margin: 14px 0 0;
    padding: 14px 0 0;
    border-top: 1px solid rgba(45, 94, 181, 0.18);
}

.bp-course-gift:has(.bp-course-gift__checkbox:checked) .bp-course-gift__fields {
    display: block;
}

.bp-course-gift__lead {
    margin: 0 0 14px;
    color: #4a4a4a;
    font-size: 13px;
    line-height: 1.5;
}

.bp-course-gift__row {
    margin: 0 0 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.bp-course-gift__row label {
    font-size: 13px;
    font-weight: 600;
    color: #1d1d1d;
}

.bp-course-gift__row input[type="text"],
.bp-course-gift__row input[type="email"],
.bp-course-gift__row textarea {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid rgba(0, 0, 0, 0.18);
    border-radius: 8px;
    font: inherit;
    background: #ffffff;
    color: #1d1d1d;
}

.bp-course-gift__row input[type="text"]:focus,
.bp-course-gift__row input[type="email"]:focus,
.bp-course-gift__row textarea:focus {
    outline: none;
    border-color: #2d5eb5;
    box-shadow: 0 0 0 3px rgba(45, 94, 181, 0.18);
}

.bp-course-gift__required {
    color: #d96fa2;
}

.bp-course-gift__hint {
    color: #6b7280;
    font-size: 12px;
}

/* -------------------------------------------------------------------------
   Product hero video — play button overlay + modal player (Vimeo)
   ------------------------------------------------------------------------- */

/* Visually-hidden label for screen readers (theme has no global helper). */
.bp-product-video-play .screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.bp-product-video-play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 76px;
    height: 76px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: rgba(45, 94, 181, 0.92);
    color: #ffffff;
    cursor: pointer;
    box-shadow: 0 10px 30px rgba(8, 10, 14, 0.35);
    transition: transform 0.15s ease, background 0.15s ease;
}

.bp-product-video-play__icon {
    /* Nudge the triangle so it looks optically centred in the circle. */
    margin-left: 4px;
}

.bp-product-video-play:hover,
.bp-product-video-play:focus-visible {
    background: rgba(45, 94, 181, 1);
    transform: translate(-50%, -50%) scale(1.06);
    outline: none;
}

.bp-video-modal {
    position: fixed;
    inset: 0;
    z-index: 320;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.bp-video-modal.is-open {
    opacity: 1;
    pointer-events: auto;
}

.bp-video-modal__scrim {
    position: absolute;
    inset: 0;
    background: rgba(8, 10, 14, 0.7);
    cursor: pointer;
}

.bp-video-modal__dialog {
    position: relative;
    width: min(960px, 92vw);
    max-width: 100%;
    transform: translateY(12px);
    transition: transform 0.2s ease;
}

.bp-video-modal.is-open .bp-video-modal__dialog {
    transform: translateY(0);
}

.bp-video-modal__frame {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #000000;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 18px 48px rgba(8, 10, 14, 0.5);
}

.bp-video-modal__iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.bp-video-modal__close {
    position: absolute;
    top: -14px;
    right: -14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: #ffffff;
    color: #1f2937;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(8, 10, 14, 0.35);
    transition: background 0.15s ease;
}

.bp-video-modal__close:hover,
.bp-video-modal__close:focus-visible {
    background: #e5e7eb;
    outline: none;
}

@media (max-width: 640px) {
    .bp-video-modal {
        padding: 16px;
    }

    .bp-product-video-play {
        width: 60px;
        height: 60px;
    }

    .bp-video-modal__close {
        top: 8px;
        right: 8px;
    }
}

