/*html{
    overflow-x: hidden;
}
body {
    font-family: 'Open Sans', sans-serif;
    background: #f4f6f9;
    line-height: unset;
    overflow-x: hidden;
}*/


#wrap {
	width: 100% !important; 
	/*height: auto !important;*/
	overflow-x: hidden !important;
}

/*@media only screen and (min-device-width: 1024px) and (max-device-height: 1366px) and (orientation: portrait)  {
	.sliders-browse-page{
		 height : 500px !important;
	}

}*/
.container-banner-browse {
    max-width: 665px;
    margin: auto;
}
.sliders-browse-page {
    background: #fff;
}

.landscape_view{
    margin: 8%;
    text-align:center;
  }

  .title-result{
	padding: 0px 0px 0px 40px;
	}
  
	@media (max-width: 820px){
		.title-result {
			padding: 7px 0 12px 20px;
		}
		.categories-result span{
			margin-left: 18px;
		}
	}
	@media (max-width: 645px){
		.title-result {
			padding: 0 0 0px 16px;
		}
		.categories-result span{
			margin-left: 18px;
		}
	}


    .title-blue{
		font-size: 24px;
		color: #0493cc;
		font-weight: 600;
		line-height: 1.33;
		margin-bottom: 0;
		margin-top: 16px
	  }
  .categories-result span{
	  margin-top: 0px;
	  margin-left: 39px;
	  display: block;
	  font-size: 18px;
	  font-weight: 600;
	  color: #67748c;
	}
.d-none{
	display: none;
}	
.red {
    color : red;
}

.show {
    display: block;
}


.col-lg-2 {
	 flex: 0 0 auto;
	 width: 16.6666666667%;
}
 .navbar-collapse {
	 align-items: center;
	 width: 100%;
}
 .collapse:not(.show) {
	 display: none;
}
 .header-section {
	 z-index: 1030;
	 position: relative;
	 box-shadow: 0 8px 6px -6px #000;
	 -webkit-box-shadow: 0 8px 6px -6px #000;
	 -moz-box-shadow: 0 8px 6px -6px rgba(181, 190, 211, 0.3);
}
 .header-section nav {
	 padding-left: 15px;
	 padding-right: 15px;
}
 .header-section nav.bg-header {
	 background-color: #fff;
}
 .header-section nav.navbar-expand-lg {
	 flex-wrap: nowrap;
	 justify-content: flex-start;
}
 .header-section nav.navbar {
	 position: relative;
	 display: flex;
	 flex-wrap: wrap;
	 align-items: center;
	 justify-content: space-between;
	 padding-top: 0.5rem;
	 padding-bottom: 0.5rem;
}
 .header-section nav .navbar-toggler {
	 padding: 0.25rem 0.75rem;
	 font-size: 1.25rem;
	 line-height: 1;
	 background-color: transparent;
	 border: 1px solid transparent;
	 border-radius: 0.25rem;
	 transition: box-shadow 0.15s ease-in-out;
	 float: right;
	 color: #0493cc;
	 border: 0;
	 margin: 11px 0;
	 padding: 0;
}
 .header-section nav .navbar-toggler .bar3 {
	 width: 40px;
	 height: 5px;
	 background-color: #0493cc;
	 margin: 4px 0;
	 transition: 0.4s;
}
 .header-section nav .navbar-toggler .bar2 {
	 width: 40px;
	 height: 5px;
	 background-color: #0493cc;
	 margin: 4px 0;
	 transition: 0.4s;
}
 .header-section nav .navbar-toggler .bar1 {
	 width: 40px;
	 height: 5px;
	 background-color: #0493cc;
	 margin: 4px 0;
	 transition: 0.4s;
}
 .header-section nav .container-fluid {
	 display: flex;
	 flex-wrap: inherit;
	 align-items: center;
	 justify-content: space-between;
	 width: 100%;
	 padding-right: var(--bs-gutter-x, 0.75rem);
	 padding-left: var(--bs-gutter-x, 0.75rem);
	 margin-right: auto;
	 margin-left: auto;
} 

.tab-content{
	padding-bottom: 10px !important;
}
 @media (min-width: 992px) {
	 .navbar-expand-lg .navbar-toggler {
		 display: none;
	}
	 .navbar-expand-lg .navbar-collapse {
		 display: block !important;
	}
	 .navbar-expand-lg .navbar-nav {
		 float: right;
	}
	 .mb-lg-0 {
		 margin-bottom: 0 !important;
	}
}
 @media (max-width: 992px) {
	 .col-sm-12 {
		 flex: 0 0 auto;
		 width: 100%;
	}
}


 



.partners_wrapper_grid {
            display: flex;
            flex-wrap: wrap;
            margin: 0;
            justify-content: space-between;
            align-items: center;
        }
        .partner_logo_wrapper {
            height: 80px;
        }
        .partner_logo_wrapper {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 90px;
            margin: 10px;
            width: 7%;
        }
        .partner_logo_wrapper img {
            max-height: 90px;
            max-width: 100%;
            filter: grayscale(100%);
            transition: all 300ms easy-in-out;
        }
        .container-gift-proxy{
            text-align:center;
             font-family: "Open Sans", sans-serif;
             margin-bottom: 40px;
             margin-top: 20px;
        }
         h1 {
            font-size: 30px;
            color: #BDBDBD;
            line-height: 40px;
            margin-bottom: 10px;
            font-family: "Open Sans", sans-serif;
            font-weight: 600;
        }
        h3{
            color: #2D9CDB;
            font-size:20px;
            text-transform:none;
            font-family: "Open Sans", sans-serif;
            line-height:30px;
            margin-bottom: 10px;
        }
        #proxy-gift input {
            margin: 11px 0 0 0;
            height: 44px !important;
            border: 1px solid #a1b3c0;
            border-radius: 4px !important;
            box-shadow: none;
            background-color: #fff;
            color: #53575f;
            font-family: 'Open Sans', sans-serif;
            font-size: 14px;
        }
        #proxy-gift input::-webkit-input-placeholder { /* Chrome/Opera/Safari */
          color: #BDBDBD;
          font-family: "Open Sans", sans-serif;
        }
        #proxy-gift input::-moz-placeholder { /* Firefox 19+ */
          color: #BDBDBD;
          font-family: "Open Sans", sans-serif;
        }
        #proxy-gift input:-ms-input-placeholder { /* IE 10+ */
          color: #BDBDBD;
          font-family: "Open Sans", sans-serif;
        }
        #proxy-gift input:-moz-placeholder { /* Firefox 18- */
          color: #BDBDBD;
          font-family: "Open Sans", sans-serif;
        }
        #proxy-gift input[type=textarea]{
            width:100%;
            min-height: 138px;
            /*padding: 15px;*/
            padding: 4px 1px 107px 9px !important
        }
        .row>* {
            flex-shrink: 0;
            width: 100%;
            max-width: 100%;
            padding-right: calc(var(--bs-gutter-x)/ 2);
            padding-left: calc(var(--bs-gutter-x)/ 2);
            margin-top: var(--bs-gutter-y);
        }
        .row {
            --bs-gutter-x: 1.5rem;
            --bs-gutter-y: 0;
            display: flex;
            flex-wrap: wrap;
            margin-top: calc(var(--bs-gutter-y) * -1);
            margin-right: calc(var(--bs-gutter-x)/ -2);
            margin-left: calc(var(--bs-gutter-x)/ -2);
            width:100%;
        }
        #proxy-gift{
           width: 1000px;
           margin: auto;
        }
        label {
            float: left;
            font-family: 'Open Sans', sans-serif;
            font-size: 14px;
            font-weight: 400;
            color: #565656;
        }
        .col-md-12{
            margin-bottom:25px;
        }
        .agenda-liveClasses.monthly-card {
            padding: 32px 0;
        }
    
        .agenda-liveClasses.monthly-card {
            max-width: 929px;
            margin: 0 auto;
        }
        .agenda-liveClasses {
            padding: 15px 25px;
            box-shadow: 1px 1px 16px rgb(216 209 209 / 62%);
            border-radius: 8px;
            border: 0;
            border-left: 15px solid #0493cc;
            position: relative;
        }
        .bluegreen-subs {
            border-left: 15px solid #26bfb1 !important;
        }
/*        .payment-method-2 {
            cursor: pointer;
        }*/
        .agenda-liveClasses.monthly-card .date-agenda-liveClasses {
            margin-top: 4px !important;
        }
        .date-agenda-liveClasses {
            display: inline-block;
            width: 100px;
            float: left;
            border-right: 2px solid #e1e3e8;
        }
        .date-agenda-liveClasses img {
            margin: 23px 12px 32px 12px;
        }
    
        img, svg {
            vertical-align: middle;
        }
        .right-side {
            width: calc(100% - 100px);
            float: left;
            display: inline-block;
            padding-left: 24px;
            padding-top: 22px;
        }
        .agenda-liveClasses.monthly-card .info-agenda-liveClasses {
            margin-top: -10px;
            width: calc(100% - 195px);
        }
        .info-agenda-liveClasses {
            width: calc(100% - 500px);
            display: inline-block;
            float: left;
        }
        .info-agenda-liveClasses h2{
            font-size: 28px;
            color: #469bcd;
            margin-bottom: 10px;
            text-align: center;
            font-family: "Open Sans", sans-serif;
            letter-spacing: -1px;
            text-align:left;
        }
        .agenda-liveClasses.monthly-card {
        padding: 32px 0;
    }
    
    .agenda-liveClasses.monthly-card {
        max-width: 980px;
        margin: 0 auto;
    }
        .purchased-renews span {
            font-size: 20px;
            font-family: "Open Sans", sans-serif;
            color: #9ca4b6;
            margin-right: 5px;
            text-align:left;
        }
        .purchased-renews{
            text-align:left;
        }
        #selectedPackagePrice{
            margin-top: 60px;
            font-size: 22px;
            color: #469bcd;
            font-family: "Open Sans", sans-serif;
            display: block;
        }
        
        .price-review-plan {
            float: right;
            margin-right: 25px;
            margin-top: -31px;
                font-weight:700;
        }
        .action-button-previous {
       /*     width: auto;
            background: #fff;
            font-weight: bold;
            color: #909aaf;
            font-size: 18px;
            text-decoration: underline;
            border: 0 none;
            border-radius: 0px;
            cursor: pointer;
            padding: 10px 5px;
            margin: 10px 5px;
            font-family: 'Open Sans', sans-serif;
            letter-spacing: 0;
            opacity: 0.8;*/

            display: inline-block;
            width: 180px;
            font-size: 16px;
            padding: 12px;
            border: 0 none;
            text-align: center;
            cursor: pointer;
            text-decoration: none;
            background: rgb(151, 201, 64);
            color: rgb(255, 255, 255);
            border-radius: 23px;
        }

            #reload_button {
            width: auto;
            background: #fff;
            color: #9ca4b6;
            font-size: 18px;
            border: 0 none;
            border-radius: 0px;
            cursor: pointer;
            padding: 10px 5px;
            margin: 10px 5px;
            font-family: 'Open Sans', sans-serif;
            letter-spacing: 0;
            opacity: 0.8;
        }
        @media (min-width: 768px){
            .col-md-6 {
                flex: 0 0 auto;
                width: 50%;
                margin-bottom:25px;
            }
            .date-agenda-liveClasses {
                border-right: 0;
            }
        }
    
        
        @media (max-width: 1000px){
            #proxy-gift {
                width: 100%;
                margin: auto;
                padding:15px;
            }
        }
        
        @media (max-width: 992px){
            .partner_logo_wrapper {
                margin: 0;
            }
        }
    
        @media (max-width: 767px){
            .partner_logo_wrapper {
                height: inherit;
                margin-bottom: 25px!important;
            }
        }
        @media (max-width: 640px){
            .date-agenda-liveClasses {
                width: 80px;
            }
        }
        @media (max-width: 567px){
            .partner_logo_wrapper {
                width: 22%;
                padding: 0 5px;
            }
            .partners_wrapper_grid {
                padding: 0 20px;
                justify-content: space-around;
            }
            .date-agenda-liveClasses {
                width: 61px;
                    border-right: 0;
            }
        }
        @media (max-width: 500px){
            
            .agenda-liveClasses.monthly-card .right-side {
                padding-left: 10px;
            }
            .agenda-liveClasses.monthly-card .info-agenda-liveClasses {
                width: 100%;
            }
            .title-monthly-subs {
                font-size: 20px !important;
            }
            .purchased-renews span {
                font-size: 15px;
                display: block;
                line-height: 20px;
            }
            .monthly-card .price-review-plan span {
                margin-top: 0;
                font-size: 22px;
                color: #469bcd;
                font-family: 'SFProDisplay-Bold';
                display: block;
                float: right;
            }
            .date-agenda-liveClasses img {
                margin: 20px 7px 32px 3px;
                width: 48px;
            }
            .col-md-6{
                margin-bottom: 15px;
            }
            
        }
        .gift-form-error{
            /*border: red 1px solid !important;*/
            background-color: #dc354559 !important;
            color: #000000 !important;
        }
        
    
        @media (max-width: 480px){
            .right-side {
                width: calc(100% - 65px);
            }
        }

        #submit-button{
            border-radius: 8px;
            font-size: 17px;
            border: 0;
            width: 100%;
            padding: 13px;
            background: #0493CC;
            color: #fff;
        }
        /* New Braintree JS v3 UI (BRAINTREE_UI=hosted) — match the old #submit-button */
        #braintree-gift-ui braintree-payment-ui button.purchase_btn{
            border-radius: 8px;
            font-size: 17px;
            border: 0;
            width: 100%;
            padding: 13px;
            height: auto;
            line-height: normal;
            margin: 16px 0 0;
            background: #0493CC;
            color: #fff;
        }
        .d-none{
            display: none;
        }
        .disabled-elem{
            background-color: #dddddd !important;
        }
        #error-msg{
            margin: 10px auto;
            /*width: 1000px;*/
            color: red;
        }
        .field-error{
            float: left;
            color: red;
            font-size: 12px;
        }
        .braintree-sheet__content--form .braintree-form__field-group {
            margin-bottom: 0px !important;
        }
        #braintree-gift-ui{
            width: 1000px;
            max-width: 100%; /* was wider than the screen from 768 to 1000px */
            margin: auto;
        }
        /* same side padding as #proxy-gift (the gift form above) */
        @media (max-width: 1000px){
            #braintree-gift-ui{
                padding: 0 15px;
                box-sizing: border-box;
            }
        }
        .braintree-sheet__content--form,.braintree-form__field-group , .braintree-form__field-group--has-error {
            display: grid !important;
        }
        @media (max-width: 767px){
            #braintree-gift-ui{
                width: auto;
                margin: auto;
            }
        }

        .model-header-slot{
    padding: 5px 14px;
}
.model-close { 
    background-color: transparent;  
    background-repeat: no-repeat; 
    padding: 0; 
    border: 0;  
    z-index: 9999;  
    font-size : $largerFont;
    cursor: pointer;      
}

.model-close span{
        color: #BEC7D7;
        font-size: 28px;
        font-weight: lighter;
        margin-top: -17px;
      }

.error-message{
    color:$red;
    font-size: 13px;
    width: 84%;
    margin:4px auto;
}

.hide {
    display: none;
}

.modal-content {
    max-width: 375px;
}

.modal-message{
    margin: 30px 0;
}

.lock_class_modal_message {
    color: rgb(4, 147, 204);
    font-size: 19px;
    text-align: center;
    display: block;
    padding: 0px 30px 30px 30px;;
}

#confirm-btn{
    display: inline-block;
    width: 180px;
    font-size: 16px;
    padding: 12px;
    border: 0 none;
    cursor: pointer;
    text-decoration: none;
    background: rgb(151, 201, 64);
    color: rgb(255, 255, 255);
    border-radius: 23px;
    margin-left: 25%;
}

label#selectedPackagePriceLabel {
    margin-top: 43px;
    color: #9ca4b6;
    font-size: 13px;
}
@media (max-width: 768px){
    label#selectedPackagePriceLabel {
    margin-top: 0px;
    color: #9ca4b6;
    font-size: 13px;
    }
}
input[type=button], button{
            outline: none !important;
        }
 :host {
     font-family: var(--font-body);
 }

 .subscription-purchase-section {
     margin: 2rem;
     display: block;
 }

 .title {
     color: #0493cc;
     font-family: SFProDisplay-Bold;
     font-size: 28px;
 }

 .subtitle {
     color: #778090;
     font-size: 20px;
     font-family: "Open Sans", sans-serif;
     margin: 1rem 0;
 }

 .title,
 .subtitle {
     text-align: center;
 }

 .plan-card-wrapper {
     display: flex;
     justify-content: center;
     margin-bottom: 32px;
 }

 .plan-card {
     position: relative;
     background: #ffffff;
     border-radius: 12px;
     box-shadow: 0 14px 30px rgba(10, 75, 125, 0.12);
     max-width: 60%;
     width: 100%;
     display: flex;
     align-items: stretch;
     text-align: left;
     padding: 24px 24px 24px 0;
 }

 .plan-card::before {
     content: "";
     position: absolute;
     left: 0;
     top: 0;
     /* space so rounded top matches card */
     bottom: 0;
     /* space so rounded bottom matches card */
     width: 6px;
     /* thickness of border */
     background: linear-gradient(180deg, #26bfb1, #0a58ca);
     border-radius: 10px;
     /* FULL rounding, creates pill-shape like your screenshot */
 }

 .plan-main {
     flex: 2;
     display: flex;
     align-items: anchor-center;
     margin-left: 2rem;
 }

 .plan-icon {
     width: 48px;
     height: 48px;
     border-radius: 12px;
     background: #e4f7ff;
     display: flex;
     align-items: center;
     justify-content: center;
     margin-right: 16px;
 }

 .plan-separator {
     width: 2px;
     background: #dcdcdc;
     height: 100%;
     margin: 0 16px;
     align-self: center;
 }

 .plan-text {
     flex: 1;
 }

 .plan-name {
     font-size: 18px;
     font-weight: 600;
     font-size: 28px;
     color: #469bcd;
     font-family: "SFProDisplay-Regular";
     margin: 1rem 0 0.5rem 0;
 }

 .plan-desc {
     display: flex;
     justify-content: space-between;
     align-items: flex-start;
     gap: 24px;
     line-height: 1.5;
     color: #6f7d8c;
 }

 .plan-desc>div:first-child {
     flex: 1 1 auto;
     max-width: 70%;
     font-size: 20px;
     font-family: "SFProDisplay-regular";
     color: #9ca4b6;
 }

 .plan-price {
     flex: 0 0 30%;
     text-align: right;
     font-size: 14px;
 }

 .price-main {
     font-size: 22px;
     color: #00a4d9;
     font-weight: 600;
 }

 .price-sub {
     font-size: 12px;
     color: #00a4d9;
 }

 .price-annual {
     font-size: 14px;
     font-weight: 500;
     color: #6f7d8c;
     margin-top: 2rem;
     color: #909aaf;
     font-family: "SFProDisplay-Bold";
     font-weight: 600;
 }

 .change-plan {
     margin-top: 24px;
     font-size: 18px;
     text-align: center;
 }

 .change-plan button {
     background: none;
     border: none;
     padding: 0;
     color: #6f7d8c;
     text-decoration: underline;
     cursor: pointer;
     font: inherit;
 }

 .change-plan button:hover {
     color: #469bcd;
 }

 .payment-section {
    width: 100%;
    justify-items: center;
    max-width: 60%;
    margin: auto;
 }

/* the new Braintree UI fills the column like Drop-In did (justify-items: center would size it
   to its content, so it changed width with every payment method) */
.payment-section braintree-payment-ui {
    justify-self: stretch;
    width: 100%;
}


braintree-dropin-ui button.purchase_btn{
        background-color: #0493cc !important;
    border: 1px solid #0493cc !important;
    color: #fff !important;
    font-family: 'SFProDisplay-Medium';
    padding: 7px 24px;
    border-radius: 100px;
    display: inline-block;
    text-decoration: none;
    text-align: center;
    margin: 23px 0;
    height: 40px;
    line-height: 24px;
    cursor: pointer;
    width:100%;
}

braintree-dropin-ui button.purchase_btn[disabled] {
    opacity: 0.6;
    cursor: not-allowed;
}

braintree-dropin-ui .dropin {
      margin: 16px 0;
}

.purchase-error {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: #fff5f5;
  border: 1px solid #ffd6d6;
  color: #8a1f1f;
  border-radius: 10px;
  padding: 12px 14px;
  font-size: 14px;
  line-height: 1.4;
  width: 60%;
  margin: 12px auto;
}

 .dropin-purchase-error{
  display: none;
  align-items: flex-start;
  gap: 10px;
  background: #fff5f5;
  border: 1px solid #ffd6d6;
  color: #8a1f1f;
  border-radius: 10px;
  padding: 12px 14px;
  margin: 12px 0 16px;
  font-size: 14px;
  line-height: 1.4;
}

.purchase-error__icon{
  margin-top: 2px;
  line-height: 1;
}
.purchase-error__text{ flex: 1; }

braintree-dropin-ui.error,
braintree-dropin-ui.dropin-purchase-error {
  display: none;
}

braintree-dropin-ui.error[open],
braintree-dropin-ui.dropin-purchase-error[open] {
  display: flex;
}
 
#subscription_success {
    margin: 2rem;
    color: #778090 !important;
    font-size: 20px;
    font-family: "Open Sans", sans-serif;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    text-align: center;
}

.loading-state {
  text-align: center;
  padding: 3rem 1rem;
  font-family: SFProDisplay-Bold;
  font-size: 20px;
  color: #0493cc; /* same blue as title */
}

 @media (max-width: 768px) {
    :host {
    font-family: var(--font-body);
  }

  /* Page container */
  .subscription-purchase-section {
    margin: 16px;
    display: block;
  }

  /* Headings */
  .title {
    font-size: 22px;
    line-height: 1.2;
  }

  .subtitle {
    font-size: 14px;
    margin: 10px 0 16px;
    line-height: 1.4;
  }

  /* Plan card wrapper (no centering constraints on mobile) */
  .plan-card-wrapper {
    display: block;
    margin-bottom: 16px;
  }

  /* Plan card */
  .plan-card {
    width: 100%;
    max-width: 100%;
    padding: 16px 16px 16px 14px; /* keep room for gradient strip */
    border-radius: 12px;
  }

  .plan-card::before {
    width: 6px;
    border-radius: 12px;
  }

  /* Main row inside card */
  .plan-main {
    flex: 1;
    margin-left: 16px; /* spacing after gradient strip */
    display: flex;
    align-items: flex-start;
    gap: 12px;
  }

  .plan-icon {
    width: 30px;
    height: 30px;
    margin-right: 16px;
    margin-top: 20px;
  }

  /* Divider not needed on mobile */
  .plan-separator {
    display: none;
  }

  .plan-text {
    flex: 1 1 auto;
    min-width: 0;
  }

  .plan-name {
    font-size: 20px;
    margin: 2px 0 6px;
    line-height: 1.2;
  }

  /* Stack description + pricing */
  .plan-desc {
    display: block; /* override desktop flex */
    line-height: 1.5;
  }

  .plan-desc > div:first-child {
    flex: none;
    max-width: 100%;
    font-size: 16px;
    color: #9ca4b6;
    margin-bottom: 10px;
  }

  .plan-price {
    flex: none;
    text-align: left;
    font-size: 14px;
  }

  .price-main {
    font-size: 22px;
    line-height: 1.1;
  }

  .price-sub {
    font-size: 12px;
    margin-top: 2px;
  }

  .price-annual {
    margin-top: 12px;
    font-size: 14px;
    line-height: 1.2;
  }

  .change-plan {
    margin-top: 12px;
    font-size: 16px;
  }

  .change-plan button {
    font-size: 16px;
  }

  /* Payment section should be full-width on mobile */
  .payment-section {
    width: 100%;
    max-width: 100%;
    margin: 0;
    justify-items: stretch;
  }

  /* Error banners full-width (no 60% constraint) */
  .purchase-error {
    width: calc(100% - 32px);
    margin: 12px 16px;
    font-size: 13px;
  }

  .dropin-purchase-error {
    width: 100%;
    margin: 12px 0 16px;
    font-size: 13px;
  }

  /* Braintree button spacing */
  braintree-dropin-ui button.purchase_btn {
    width: 100%;
    margin: 18px 0;
    height: 44px;
    line-height: 28px;
  }

  /* Optional: make drop-in spacing tighter */
  braintree-dropin-ui .dropin {
    margin: 12px 0;
  }

  .loading-state {
    font-size: 18px;
    padding: 2.5rem 1rem;
  }
}
/* Class profile page (class-profile-wrapper + components/class-profile/*).
   Values match the live v2 class page (babysparks.com/classes/{id}). */

.class-profile-page {
  --cp-font: "SF Pro Display", var(--font-body);
  --cp-blue: #0493cc;
  --cp-heading: #343434;
  --cp-text: #212529;
  --cp-muted: rgba(0, 0, 0, 0.6);
  --cp-faint: rgba(0, 0, 0, 0.5);
  --cp-label: rgba(0, 0, 0, 0.3);
  --cp-line: rgba(0, 0, 0, 0.1);
  /* horizontal dividers: live hr.line-horiz is rgba(0,0,0,.1) at opacity .25 */
  --cp-divider: rgba(0, 0, 0, 0.025);
  --cp-shadow: 0 5px 30px 0 rgba(172, 187, 209, 0.32);

  background: #fff;
  padding: 5px 12px 0;
  font-family: var(--cp-font);
  font-size: 16px;
  line-height: 1.5;
  color: var(--cp-text);
}

.cp-container {
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 12px;
}

/* CONTAINER_STEPS: the live class page uses bootstrap .container widths (card 1320 / 1140 / 960,
   fluid below 992px); the instructor page and classroom keep their own containers */
@media (max-width: 1399px) {
  .class-profile-page:not(.classroom-page):not(.ip-page) > .cp-container {
    max-width: 1140px;
  }
}

@media (max-width: 1199px) {
  .class-profile-page:not(.classroom-page):not(.ip-page) > .cp-container {
    max-width: 960px;
  }
}

@media (max-width: 991px) {
  .class-profile-page:not(.classroom-page):not(.ip-page) > .cp-container {
    max-width: none;
  }
}

.cp-empty {
  min-height: 500px;
  padding-top: 60px;
  text-align: center;
  color: var(--cp-faint);
}

/* ---------- title + breadcrumb ---------- */

.cp-page-title {
  font-family: var(--cp-font);
  font-size: 40px;
  font-weight: 500;
  line-height: 48px;
  color: var(--cp-heading);
  margin: 0 0 8px;
}

.cp-breadcrumb {
  font-size: 18px;
  line-height: 27px;
  color: var(--cp-heading);
  text-transform: capitalize;
  margin: 0 0 44px;
  padding: 0; /* the header's global nav rule adds 0 15px */
}

.cp-breadcrumb a,
.cp-breadcrumb-current {
  color: var(--cp-heading);
  text-decoration: none;
}

.cp-breadcrumb a:hover {
  color: var(--cp-blue);
}

/* small chevron, like v2's arrow-right.png */
.cp-breadcrumb-sep {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid var(--cp-heading);
  border-bottom: 1.5px solid var(--cp-heading);
  transform: rotate(-45deg);
  margin: 0 8px 3px 2px;
}

/* ---------- white card ---------- */

/* -12px sides like v2's .white-content-page, so the card sits just outside the
   title / breadcrumb text edge */
.cp-card {
  display: flex;
  margin: 0 -12px;
  background: #fff;
  border-radius: 24px;
  box-shadow: var(--cp-shadow);
}

.cp-main {
  flex: 0 0 66.6667%;
  max-width: 66.6667%;
  min-width: 0;
  padding: 25px 27px;
  border-right: 2px solid #e4e4e5;
}

.cp-sidebar {
  flex: 0 0 33.3333%;
  max-width: 33.3333%;
  min-width: 0;
  padding: 0 12px;
}

.cp-sidebar-inner {
  position: sticky;
  top: 16px;
}

/* ---------- class header ---------- */

.cp-header {
  display: flex;
}

/* position: relative so the discount label (absolute, top-left) sits on the image */
.cp-media-wrap {
  position: relative;
  flex: 0 0 50%;
  max-width: 353px;
  padding: 0 12px 0 0;
}

.cp-media {
  width: 100%;
  height: auto;
  display: block;
}

video.cp-media {
  background: #000;
}

.cp-info {
  flex: 1 1 0;
  min-width: 0;
  padding: 0 12px;
}

/* Plain inline text (wraps word by word like v2); the icon is centred on the text
   so it doesn't set the line's baseline and push the topic down */
.cp-type {
  font-size: 14px;
  line-height: 21px;
  text-transform: uppercase;
}

.cp-type-label {
  display: inline;
  margin-right: 2px;
}

.cp-type-label img {
  width: 14px;
  height: 14px;
  vertical-align: -2px;
  margin-right: 6px;
}

.cp-type-label.color_blue {
  color: var(--cp-blue);
}

.cp-type-label.color_rose {
  color: #ea4a64;
}

.cp-type-label.color_green {
  color: #3bb39b;
}

.cp-topic {
  color: var(--cp-faint);
}

.cp-title {
  font-family: var(--cp-font);
  font-size: 32px;
  font-weight: 500;
  line-height: 38.4px;
  color: var(--cp-heading);
  text-transform: capitalize;
  margin: 0 0 8px;
  word-break: break-word;
}

.cp-line {
  border: 0;
  height: 1px;
  background-color: var(--cp-divider);
  opacity: 1;
  margin: 0 0 16px;
}

.cp-meta {
  display: flex;
  flex-wrap: wrap;
}

.cp-meta-item {
  flex: 0 0 33.3333%;
  display: flex;
  flex-direction: column;
}

.cp-meta-item.cp-age {
  margin-top: 24px;
}

.cp-meta-label {
  font-size: 10px;
  line-height: 15px;
  font-weight: 500;
  color: var(--cp-label);
  text-transform: uppercase;
}

.cp-meta-value {
  font-size: 16px;
  line-height: 24px;
  font-weight: 500;
  color: #000;
}

.cp-enrolled {
  font-size: 15px;
  line-height: 22.5px;
  margin: 21px 0 16px;
}

.cp-enrolled .fa-heart {
  color: var(--cp-blue);
  padding-right: 5px;
}

.cp-enrolled b {
  font-weight: 700;
  color: var(--cp-text);
}

.cp-enrolled span {
  color: var(--cp-faint);
  margin-left: 12px;
}

/* ---------- text blocks ---------- */

.cp-text {
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-muted);
  word-break: break-word;
}

.cp-text p {
  margin: 0 0 16px;
}

.cp-summary {
  line-height: 20px;
  margin: 19px 0 0;
}

.cp-ellipsis {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.cp-view-more {
  display: inline-block;
  margin: 0 0 16px;
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-blue);
  text-decoration: none;
  cursor: pointer;
}

.cp-section {
  border-top: 1px solid var(--cp-divider);
  padding: 24px 0 16px;
}

.cp-header + .cp-section {
  border-top: 0;
  padding-top: 8px;
}

.cp-section-title {
  font-family: var(--cp-font);
  font-size: 24px;
  font-weight: 500;
  line-height: 28.8px;
  color: var(--cp-heading);
  margin: 0 0 8px;
}

.cp-two-col {
  display: flex;
  gap: 24px;
}

.cp-col-main {
  flex: 2 1 0;
  min-width: 0;
}

.cp-col-side {
  flex: 1 1 0;
  min-width: 0;
  margin-top: 32px;
  padding-left: 29px;
  border-left: 1px solid var(--cp-line);
}

.cp-side-title {
  font-family: var(--cp-font);
  font-size: 14px;
  font-weight: 500;
  line-height: 16.8px;
  color: #000;
  margin: 13px 0 8px;
}

.cp-col-side .cp-text {
  font-size: 16px;
  line-height: 24px;
  color: var(--cp-text);
}

/* ---------- sessions overview ---------- */

.cp-sessions bs-swiper {
  display: block;
}

/* ---------- instructor ---------- */

.cp-instructor .cp-col-side {
  margin-top: 0;
}

.cp-instructor-main {
  display: flex;
}

.cp-instructor-photo {
  width: 112px;
  height: auto;
  align-self: flex-start;
  flex-shrink: 0;
}

.cp-instructor-info {
  margin-left: 30px;
  min-width: 0;
  font-size: 14px;
  line-height: 19px;
  color: #909aaf;
}

.cp-instructor-label {
  font-family: var(--cp-font);
  font-size: 24px;
  font-weight: 500;
  font-style: italic;
  line-height: 28.8px;
  color: var(--cp-heading);
  margin: 0 0 8px;
}

.cp-instructor-name {
  display: inline-block;
  font-size: 25px;
  line-height: 30px;
  font-style: italic;
  color: var(--cp-blue);
  text-decoration: none;
  margin-bottom: 8px;
}

.cp-stars img {
  width: 26px;
  height: 26px;
  margin-right: 2px;
}

.cp-review-count {
  font-size: 14px;
  color: var(--cp-faint);
}

.cp-classes-completed {
  display: block;
  font-size: 14px;
  line-height: 19px;
  color: var(--cp-muted);
  margin: 15px 0;
}

.cp-instructor-bio {
  font-style: italic;
  font-weight: 500;
  line-height: 19px;
}

/* ---------- FAQ ---------- */

.cp-faq {
  margin-top: 33px;
}

.cp-faq .cp-section-title {
  padding-bottom: 25px;
  margin-bottom: 0;
  border-bottom: 1px solid var(--cp-line);
}

.cp-accordion-item {
  border-bottom: 1px solid var(--cp-line);
}

.cp-accordion-button {
  width: 100%;
  background: none;
  border: 0;
  padding: 26px 0;
  text-align: left;
  font-family: var(--cp-font);
  font-size: 16px;
  line-height: 25px;
  color: #0494cd;
  cursor: pointer;
}

.cp-accordion-sign {
  display: inline-block;
  width: 16px;
}

.cp-accordion-body {
  font-size: 15px;
  line-height: 20px;
  color: var(--cp-faint);
  padding: 0 20px 16px 16px;
}

/* ---------- more classes ---------- */

.cp-more-classes {
  background: #fff;
  border-radius: 24px;
  box-shadow: var(--cp-shadow);
  margin: 40px -12px;
  padding: 0 0 24px 12px;
}

/* heading: shared <heading-element> "title title-blue" (as the browse page sliders); it
   starts on the same x as the page title / breadcrumb */
.cp-more-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 10px 0 8px;
}

.cp-more-link {
  margin: 16px 22px 0 0;
  font-size: 15px;
  line-height: 25px;
  font-weight: 700;
  color: #0494cd;
  text-decoration: none;
}

/* ---------- purchase sidebar ---------- */

.cp-price-block {
  margin-bottom: 25px;
}

.cp-price {
  font-family: var(--cp-font);
  font-size: 32px;
  font-weight: 500;
  line-height: 38.4px;
  color: var(--cp-text);
  margin: 20px 0 0;
  padding-left: 25px;
}

.cp-price-discount {
  font-size: 20px;
  color: var(--cp-faint);
  text-decoration: line-through;
  margin-left: 8px;
}

.cp-local-price {
  display: block;
  font-family: "Open Sans", sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-blue);
  padding-left: 25px;
}

.cp-subscribe-teaser {
  margin: -8px 0 40px 25px;
}

.cp-subscribe-line {
  display: block;
  font-size: 16px;
  line-height: 24px;
  font-weight: 600;
  color: var(--cp-blue);
}

.cp-subscribe-line sup {
  font-size: 12px;
}

.cp-subscribe-teaser .cp-local-price {
  padding-left: 0;
}

.cp-sidebar .inline-auth,
.cp-auth,
.cp-premium,
.cp-schedules,
.cp-options,
.cp-sidebar-inner > .cp-primary-button,
.cp-sidebar-inner > .cp-validation-msg {
  margin-left: 26px;
  margin-right: 26px;
}

/* Buttons placed directly in the sidebar (Purchased, Enroll Now, Buy (Free)): fit inside
   the 26px side margins instead of 100% + margins, and keep the price block's top spacing
   when nothing comes before them */
.cp-sidebar-inner > .cp-primary-button {
  width: calc(100% - 52px);
}

.cp-sidebar-inner > .cp-primary-button:first-child {
  margin-top: 25px;
}

.cp-auth-title {
  font-family: var(--cp-font);
  font-size: 18px;
  font-weight: 500;
  line-height: 21.6px;
  color: var(--cp-text);
  margin: 0 0 8px;
}

.cp-primary-button {
  display: block;
  width: 100%;
  height: 43px;
  margin-top: 8px;
  padding: 8px;
  border: 0;
  border-radius: 8px;
  background: var(--cp-blue);
  color: #fff;
  font-family: var(--cp-font);
  font-size: 18px;
  font-weight: 500;
  line-height: 27px;
  cursor: pointer;
}

.cp-primary-button:disabled {
  opacity: 0.6;
  cursor: default;
}

/* live: "Purchased" stays solid blue (it just can't be clicked) */
.cp-primary-button.cp-purchased-button:disabled {
  opacity: 1;
}


.cp-validation-msg {
  font-size: 14px;
  color: #c00808;
  margin: 8px 0;
}

/* Premium header and buy button, measured on the live page (.price-plan-premium,
   .local-single-price, .btn-buy): 20px below the card top, "INCLUDED" 22px in, the approx.
   price 15px under it, the 376x50 button 24px under that */
.cp-premium {
  font-size: 14px;
  line-height: 24px;
  margin-top: 25px;
  margin-bottom: 24px;
}

.cp-sidebar-inner > .cp-premium {
  margin: 20px 20px 15px 22px;
}

.cp-premium-included {
  color: var(--cp-blue);
  font-weight: 500;
  margin-right: 3px;
}

.cp-premium-label {
  color: #666;
}

.cp-sidebar-inner > .cp-premium-local {
  margin: 0 20px 24px 24px;
  padding-left: 0;
}

.cp-sidebar-inner > .cp-primary-button.cp-buy-button {
  width: calc(100% - 40px);
  height: 50px;
  margin: 0 20px;
  padding: 13px;
  font-size: 16px;
  line-height: 24px;
  font-weight: 500;
}

.cp-schedules {
  margin-top: 16px;
  margin-bottom: 16px;
}

.cp-schedules-title {
  font-family: var(--cp-font);
  font-size: 18px;
  font-weight: 500;
  color: var(--cp-text);
  margin: 0 0 12px;
}

.cp-schedule-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cp-schedule {
  position: relative;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--cp-line);
  border-radius: 8px;
  padding: 8px 10px 8px 34px;
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-muted);
  cursor: pointer;
}

.cp-schedule.checked {
  border-color: var(--cp-blue);
}

.cp-schedule.disabled {
  opacity: 0.6;
  cursor: default;
}

.cp-schedule input[type="radio"] {
  position: absolute;
  left: 12px;
  top: 12px;
}

.cp-schedule-time b {
  color: var(--cp-text);
}

.cp-class-full {
  color: #ea4a64;
  font-weight: 700;
  text-transform: uppercase;
}

.cp-schedule-note {
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-faint);
  margin: 12px 0 0;
}

/* ---------- enrollment options (logged-in, paid class) ---------- */

.cp-enroll-title {
  font-family: var(--cp-font);
  font-size: 28px;
  font-weight: 500;
  line-height: 34px;
  color: var(--cp-text);
  margin: 25px 26px 16px;
}

.cp-options {
  margin-top: 8px;
}

.cp-plan-card {
  display: block;
  border: 1px solid #e4e4e5;
  border-radius: 4px;
  padding: 18px 16px;
  margin-bottom: 16px;
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-text);
  cursor: pointer;
}

/* a global label rule floats labels left; keep these in normal flow */
label.cp-plan-card,
.cp-plan-head,
.cp-schedule {
  float: none;
  width: auto;
}

label.cp-plan-card,
.cp-plan-head {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
}

.cp-plan-card input[type="radio"],
.cp-plan-head input[type="radio"] {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin: 1px 0 0;
  accent-color: var(--cp-blue);
}

.cp-plan-body {
  display: flex;
  flex-direction: column;
  min-width: 0;
  flex: 1 1 auto;
}

/* v2 .clsprice { float: right }: "One-Time Purchase" left, "$30 USD Class Price" on the
   same line at the right, the approx. local price right-aligned under it */
.cp-plan-onetime {
  flex-direction: row;
  flex-wrap: wrap; /* narrow sidebars: the price moves under the title, still on the right */
  justify-content: space-between;
  align-items: flex-start;
  gap: 4px 12px;
}

.cp-plan-onetime .cp-plan-class-price {
  margin-left: auto;
}

.cp-plan-onetime .cp-plan-class-price > span:first-child {
  white-space: nowrap;
}

.cp-plan-onetime .cp-plan-class-price b {
  font-weight: 700; /* v2 .clsprice: bold blue price, "Class Price" in normal text */
}

.cp-plan-name {
  font-size: 14px;
}

.cp-plan-name-blue {
  color: var(--cp-blue);
}

.cp-plan-desc {
  font-size: 13px;
  font-weight: 500;
  color: #000;
  margin-top: 4px;
}

.cp-plan-class-price {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  text-align: right;
}

.cp-plan-class-price b,
.cp-plan-prices b {
  color: var(--cp-blue);
  font-weight: 600;
}

.cp-plan-local {
  display: block;
  font-size: 14px;
  color: var(--cp-blue);
}

.cp-plan-details {
  padding-left: 28px;
  cursor: default;
}

.cp-plan-prices {
  margin-top: 12px;
  font-size: 14px;
  line-height: 21px;
}

.cp-plan-muted {
  color: rgba(0, 0, 0, 0.4);
  margin: 0 3px;
}

.cp-plan-note {
  display: block;
  font-size: 13px;
  color: rgba(0, 0, 0, 0.5);
}

.cp-plan-tabs {
  display: inline-flex;
  align-items: flex-start;
  margin: 28px 0 0 -28px;
  background: #eef1f6;
  border-radius: 20px;
}

.cp-plan-tab-wrap {
  position: relative;
}

.cp-plan-tab {
  min-width: 90px;
  height: 34px;
  padding: 0 18px;
  border: 0;
  border-radius: 20px;
  background: transparent;
  font-family: var(--cp-font);
  font-size: 14px;
  color: rgba(0, 0, 0, 0.5);
  cursor: pointer;
}

.cp-plan-tab.active {
  background: var(--cp-blue);
  color: #fff;
}

.cp-plan-tab:disabled {
  cursor: not-allowed;
  opacity: 0.5;
}

.cp-plan-off {
  position: absolute;
  left: 14px;
  top: 38px;
  white-space: nowrap;
  font-size: 13px;
  color: var(--cp-blue);
}

.cp-plan-off .fa {
  margin-right: 3px;
}

/* the yearly discount badge is greyed out while Monthly is selected */
.cp-plan-off.disabled {
  color: rgba(0, 0, 0, 0.3);
}

.cp-plan-card:has(.cp-plan-tabs) {
  padding-bottom: 34px;
}

.cp-payment {
  margin-top: 8px;
}

/* Enroll / Buy button under the payment form: production v2 .btn-buy.btn-blue (measured on
   babysparks.com: 16px SF Pro Medium, 24px line, 13px padding, 8px corners, no margin).
   v3 has the SFProDisplay-Medium file as "SF Pro Display" 500. */
.cp-payment braintree-payment-ui button.purchase_btn,
.cp-payment braintree-dropin-ui button.purchase_btn {
  display: block;
  width: 100%;
  height: auto;
  margin: 0;
  padding: 13px;
  border: 0 !important;
  border-radius: 8px;
  background-color: #0493cc !important;
  color: #fff !important;
  font-family: "SFProDisplay-Medium", "SF Pro Display", sans-serif;
  font-weight: 500;
  font-size: 16px;
  line-height: 24px;
}

/* 769-1120px: the sidebar column is under 260px wide, so Expiration and CVV get their own
   lines (side by side the expiry placeholder is cut off and its label wraps to 3 lines) */
@media (min-width: 769px) and (max-width: 1120px) {
  .cp-payment braintree-payment-ui .bt-pay__row {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }
}

/* phones: the enrollment options (title, option cards, payment form) use the sidebar's full
   width with only its own slight padding, not the extra 26px desktop indent */
@media (max-width: 767px) {
  .cp-enroll-title,
  .cp-sidebar-inner > .cp-options {
    margin-left: 0;
    margin-right: 0;
  }
}

/* production: Braintree badge ~30px under the button */
.cp-payment [data-braintree-footer-logo] {
  margin-top: 30px !important;
}

/* error from the purchase API, shown right above the payment box */
.cp-payment-error {
  margin: 0 0 8px;
  padding: 10px 12px;
  border-radius: 4px;
  background: rgba(192, 8, 8, 0.06);
}

.cp-agreement-text {
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-muted);
  max-height: 260px;
  overflow: auto;
}

.cp-success {
  margin: 25px 26px;
  background: rgba(85, 85, 85, 0.05);
  border-radius: 8px;
  padding: 24px 16px;
  text-align: center;
  color: var(--cp-blue);
}

/* ---------- rating & reviews ---------- */

.cp-reviews-average {
  display: flex;
  align-items: center;
  margin-bottom: 16px;
}

.cp-reviews-average .cp-review-count {
  color: var(--cp-blue);
  font-size: 16px;
  margin-left: 4px;
}

.cp-reviews bs-swiper {
  display: block;
}

/* ---------- 'more' modal (sessions / reviews) ---------- */

.cp-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(0, 0, 0, 0.5);
}

.cp-modal {
  position: relative;
  width: 100%;
  max-width: 600px;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  background: #fff;
  border-radius: 24px;
  padding: 40px 30px 30px;
  font-family: var(--cp-font, 'SF Pro Display', var(--font-body));
  box-sizing: border-box;
}

.cp-modal-close {
  position: absolute;
  top: 12px;
  right: 18px;
  background: none;
  border: 0;
  padding: 0 4px;
  font-size: 32px;
  line-height: 1;
  color: #000;
  cursor: pointer;
}

.cp-modal-session-number {
  font-size: 22px;
  font-weight: 700;
  line-height: 28px;
  color: #5b6577;
  text-transform: uppercase;
  margin: 0 0 12px;
}

.cp-modal-title {
  font-size: 18px;
  font-weight: 500;
  line-height: 24px;
  color: #000;
  margin: 0 0 8px;
}

.cp-modal-text {
  font-size: 15px;
  line-height: 24px;
  color: rgba(0, 0, 0, 0.6);
  word-break: break-word;
}

.cp-modal-text::after {
  content: '';
  display: block;
  clear: both;
}

.cp-modal-text p {
  margin: 0 0 16px;
}

.cp-modal-text li {
  margin-bottom: 12px;
}

.cp-modal-thumb {
  float: left;
  width: 60px;
  height: 55px;
  object-fit: cover;
  margin: 4px 10px 6px 0;
}

.cp-modal-review-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 32px 8px 0;
}

.cp-modal-review-stars img {
  width: 16px;
  height: 16px;
  margin-right: 3px;
}

.cp-modal-review-time {
  font-size: 14px;
  color: rgba(0, 0, 0, 0.5);
}

.cp-modal-review-author {
  text-transform: capitalize;
}

/* ---------- responsive ---------- */

/* live: the purchase panel stays in its own column down to 768px, then stacks under the class */
@media (max-width: 768px) {
  .cp-card {
    flex-direction: column;
  }

  .cp-main,
  .cp-sidebar {
    flex-basis: auto;
    max-width: 100%;
  }

  .cp-main {
    border-right: 0;
    border-bottom: 2px solid #e4e4e5;
  }

  .cp-sidebar {
    padding-bottom: 24px;
  }

  .cp-sidebar-inner {
    position: static;
  }
}

@media (max-width: 900px) {
  /* v2 mobile (class_profile.js @900): class type + title move above the image, details follow it */
  .cp-header {
    flex-direction: column;
  }

  .cp-info {
    display: contents;
  }

  .cp-info > * {
    order: 4;
  }

  .cp-type {
    order: 1;
  }

  .cp-title {
    order: 2;
    margin-bottom: 16px;
  }

  .cp-media-wrap {
    order: 3;
    flex-basis: auto;
    max-width: 100%;
    padding: 0 0 16px;
  }
}

/* v2: back arrow to the browse page on small phones */
.cp-back {
  display: none;
}

@media (max-width: 468px) {
  .cp-back {
    display: inline-block;
    margin-right: 10px;
    font-size: 18px;
    color: var(--cp-blue);
    text-decoration: none;
    vertical-align: -2px;
  }
}

@media (max-width: 600px) {
  .cp-page-title {
    font-size: 30px;
    line-height: 36px;
  }

  .cp-breadcrumb {
    font-size: 15px;
    margin-bottom: 24px;
  }

  .cp-main {
    padding: 16px;
  }

  .cp-two-col,
  .cp-instructor-main {
    flex-direction: column;
  }

  .cp-col-side {
    border-left: 0;
    padding-left: 0;
    margin-top: 16px;
  }

  /* v2 mobile: instructor photo, name, rating and bio centred */
  .cp-instructor-main {
    align-items: center;
    text-align: center;
  }

  .cp-instructor-photo {
    align-self: center;
    width: 76px;
  }

  .cp-instructor-info {
    margin: 16px 0 0;
  }

  .cp-instructor .cp-col-side {
    margin-top: 24px;
  }
}

/* ---------- phones: same breakpoints as production (v2) ---------- */

/* v2 style.css @600: the class card loses its rounded corners and shadow */
@media (max-width: 600px) {
  .cp-card {
    border-radius: 0;
    box-shadow: none;
  }
}

/* v2 common_method.js @500: the purchase panel (.sidebar-right) moves right under the class
   header (.mobile-premium-descr), before Class Description. The main column and the details
   component become part of the card's column so the panel can sit between them. */
@media (max-width: 500px) {
  .cp-main,
  .cp-main > class-profile-details {
    display: contents;
  }

  .cp-card > * ,
  .cp-main > *,
  .cp-main > class-profile-details > * {
    order: 3;
  }

  .cp-main > class-profile-details > .cp-header {
    order: 1;
    padding: 16px 16px 0;
  }

  .cp-card > .cp-sidebar {
    order: 2;
    padding: 0 16px 24px;
  }

  /* the desktop sidebar indents these ~25px; in the main column they line up with the text */
  .cp-sidebar .cp-price,
  .cp-sidebar .cp-subscribe-teaser,
  .cp-sidebar .inline-auth {
    margin-left: 0;
    padding-left: 0;
  }

  .cp-main > class-profile-details > .cp-section {
    padding-left: 16px;
    padding-right: 16px;
  }

  .cp-main > class-faq {
    display: block;
    padding: 0 16px;
  }
}

/* v2 style.css @468: the "Online Classes" title and breadcrumb (.row-desktop) are hidden */
@media (max-width: 468px) {
  .cp-page-title:not(.cr-title), /* the classroom reuses .cp-page-title for its own title */
  .cp-breadcrumb {
    display: none;
  }
}

/* PREMIUM_PANEL_RESPONSIVE: premium header + buy button per live breakpoint, measured on the
   live page (.price-plan-premium, .local-single-price, .btn-buy) */
@media (max-width: 768px) {
  /* live @768: approx. price in 10px */
  .cp-sidebar-inner > .cp-premium-local {
    font-size: 10px;
    line-height: 15px;
  }

  /* stacked panel: button 8px in, header 10px, price 12px; gaps 15 / 24 */
  .cp-sidebar-inner > .cp-premium {
    margin: 20px 8px 15px 10px;
  }

  .cp-sidebar-inner > .cp-premium-local {
    margin: 0 8px 24px 12px;
  }

  .cp-sidebar-inner > .cp-primary-button.cp-buy-button {
    width: calc(100% - 16px);
    margin: 0 8px;
  }
}

@media (max-width: 500px) {
  /* panel moved under the class header (v2 .mobile-premium-descr): button 19px in, header 30px,
     price 41px; gaps 15 / 16 */
  .cp-sidebar-inner > .cp-premium {
    margin: 20px 19px 15px 30px;
  }

  .cp-sidebar-inner > .cp-premium-local {
    margin: 0 19px 16px 41px;
  }

  .cp-sidebar-inner > .cp-primary-button.cp-buy-button {
    width: calc(100% - 38px);
    margin: 0 19px;
  }
}

@media (max-width: 468px) {
  /* live mobile header (.mobile-prem): approx. price first, then INCLUDED, then the button
     edge to edge; button 0, header 11px, price 22px in; gaps 19 / 15 */
  .cp-card > .cp-sidebar {
    padding-left: 15px;
    padding-right: 15px;
  }

  .cp-sidebar-inner:has(> .cp-premium) {
    display: flex;
    flex-direction: column;
  }

  .cp-sidebar-inner > .cp-premium-local {
    order: -1;
    margin: 20px 0 19px 22px;
  }

  .cp-sidebar-inner > .cp-premium {
    margin: 0 0 15px 11px;
  }

  .cp-sidebar-inner > .cp-primary-button.cp-buy-button {
    width: 100%;
    margin: 0;
  }
}

/* Instructor profile page (instructor-profile-wrapper + components/instructor-profile/*).
   Shared pieces (container, carousel, review cards, modal) come from _class-profile.css.
   Values match the live v2 instructor page (babysparks.com/classes/instructor/{id}). */

.ip-page {
  --ip-font: "Open Sans", var(--font-body);
  font-family: var(--ip-font);
}

/* live: a 1111px row (bootstrap .container) instead of the class page's wider container */
.ip-page .cp-container {
  max-width: 1135px;
}

/* ---------- name / expertise / stats + photo ---------- */

/* live: two equal .col-md-6 columns, the photo at the start of the right one */
.ip-hero {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  margin: 18px 0 0;
}

.ip-info {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.ip-identity {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  padding: 24px 0;
}

.ip-name {
  font-family: var(--ip-font);
  font-size: 50px;
  font-weight: 700;
  line-height: 60px;
  color: #28262b;
  margin: 0 0 8px;
  word-break: break-word;
}

.ip-expertise {
  font-size: 17px;
  line-height: 25.5px;
  color: #858585;
  margin: 0 0 16px;
}

.ip-stats {
  margin-top: 16px;
  font-size: 25px;
  line-height: 37.5px;
  color: #b0b5bf;
}

.ip-divider {
  margin: 0 6px;
}

.ip-rating img {
  width: 22px;
  height: 22px;
  vertical-align: -2px;
}

.ip-photo-wrap {
  display: flex;
  align-items: flex-start;
}

.ip-photo {
  width: 100%;
  max-width: 420px;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 18px;
}

/* tabs: shared <nav-tab> (My BabySparks style) */
.ip-tabs {
  display: block;
}

/* ---------- tab panels ---------- */

.ip-panel {
  margin: 52px 0 40px;
  font-size: 17px;
  line-height: 25.5px;
  color: #000;
  word-break: break-word;
}

.ip-panel p {
  margin: 0 0 16px;
}

.ip-panel.cp-reviews {
  border-top: 0;
  padding: 0;
}

/* "More Classes from this Expert:" uses the shared <class-more-classes> card box as on the class page */
.ip-classes .cp-more-classes {
  margin-bottom: 40px;
}

/* ---------- responsive ---------- */

/* live stacks below the bootstrap md breakpoint (768px) */
@media (max-width: 767px) {
  .ip-page .cp-container {
    padding: 0; /* live: content 12px from the screen edge */
  }

  /* name + stats, then the photo, then the tabs */
  .ip-hero {
    display: flex;
    flex-direction: column;
  }

  .ip-info {
    display: contents;
  }

  .ip-identity {
    order: 1;
    padding: 8px 0 0;
  }

  .ip-photo-wrap {
    order: 2;
  }

  .ip-photo {
    max-width: none; /* live: full-width photo on phones */
  }

  .ip-tabs {
    order: 3;
  }

  .ip-name {
    font-size: 36px;
    line-height: 44px;
  }

  .ip-stats {
    font-size: 21px;
  }

  .ip-panel {
    margin-top: 28px;
  }
}

/* Classroom page (classroom-wrapper + components/classroom/*).
   Font and typography come from the class detail page (_class-profile.css): cp-page-title,
   cp-section-title, cp-text, cp-view-more, cp-primary-button, cp-instructor-name, cp-side-title
   and its --cp-* colours. Only layout and classroom-only parts are defined here. */

.cr-message {
  min-height: 400px;
  padding-top: 10%;
  text-align: center;
  color: var(--cp-muted);
}

/* head = back link + title; the sidebar spans from the top when it lists lessons, otherwise
   it starts level with the video (single-session classes, as v2) */
.cr-layout {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  grid-template-areas:
    "head ."
    "main side";
  grid-template-rows: auto 1fr; /* a tall lesson list never stretches the title row */
  column-gap: 32px;
  padding-bottom: 50px;
}

.cr-layout.cr-has-lessons {
  grid-template-areas:
    "head side"
    "main side";
}

.cr-head {
  grid-area: head;
}

.cr-main {
  grid-area: main;
  min-width: 0;
}

.cr-sidebar {
  grid-area: side;
  min-width: 0;
}

/* lesson list starts beside the back link; the instructor box starts at the video's top edge */
.cr-layout:not(.cr-has-lessons) .cr-sidebar-content {
  padding-top: 0;
}

/* ---------- back link, title, video ---------- */

.cr-back {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 20px 0 0;
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-muted);
  text-decoration: none;
}

.cr-back:hover {
  color: var(--cp-blue);
  text-decoration: none;
}

.cr-back-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  box-shadow: 1px 1px 4px rgba(188, 188, 188, 0.88);
  color: var(--cp-blue);
  font-size: 19px;
}

/* .cp-page-title gives the font; this adds the classroom spacing */
.cr-title {
  margin: 24px 0 28px;
  overflow-wrap: anywhere; /* long unbroken titles stay inside the column */
}

.cr-video {
  margin-bottom: 40px;
}

.cr-video-frame {
  position: relative;
  padding-top: 56.25%;
  background: #000;
}

.cr-video-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.cr-class-image {
  display: block;
  width: 100%;
  max-height: 560px;
  object-fit: cover;
  background: #000;
}

/* video file (lesson MP4 / Zoom recording): whole picture in a 16:9 frame */
.cr-recording {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: contain;
  background: #000;
}

/* ---------- tabs + panels ---------- */

.cr-tabs {
  display: block;
}

.cr-panel {
  padding-top: 24px;
}

.cr-section {
  margin-bottom: 32px;
}

/* .cp-section-title gives the font */
.cr-section-title,
.cr-sidebar-title {
  margin-bottom: 16px;
}

.cr-clamped {
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* .cp-view-more look on a button */
.cr-view-toggle {
  padding: 0;
  border: 0;
  background: none;
  font-family: inherit;
  cursor: pointer;
}

.cr-view-toggle i {
  margin-left: 4px;
}

/* ---------- live / private ---------- */

.cr-class-date {
  margin: 16px 0 0;
}

.cr-live-actions {
  margin: 20px 0 12px;
}

/* .cp-primary-button, sized for the main column */
.cr-button {
  display: inline-block;
  width: auto;
  min-width: 240px;
  padding: 8px 28px;
  text-align: center;
  text-decoration: none;
}

.cr-button:hover {
  color: #fff;
  text-decoration: none;
}

.cr-button-waiting,
.cr-button-done {
  opacity: 0.6;
}

.cr-button-done {
  cursor: default;
}

.cr-alert {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  border-left: 4px solid #b30000;
  background: #fff3f3;
  font-size: 16px;
  font-weight: 500;
  color: #b30000;
}

.cr-recording-note {
  margin: 0;
}

.cr-info-text {
  margin: 0;
  padding: 8px 4px;
  text-align: center;
  color: var(--cp-muted);
}

/* ---------- resources ---------- */

.cr-resource {
  display: flex;
  align-items: center;
  gap: 24px;
  margin-bottom: 16px;
  padding: 14px 32px 14px 0;
  border: 2px solid #e4e4e5;
  border-radius: 0;
  text-decoration: none;
}

.cr-resource:hover {
  text-decoration: none;
  border-color: #d3d6dc;
}

.cr-resource-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 120px;
  align-self: stretch;
  border-right: 2px solid #e4e4e5;
}

.cr-resource-icon img {
  width: 40px;
}

.cr-resource-info {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-width: 0;
}

.cr-resource-type {
  font-size: 14px;
  line-height: 21px;
  color: var(--cp-blue);
}

.cr-resource-name {
  font-size: 16px;
  font-weight: 500;
  line-height: 24px;
  color: var(--cp-heading);
  word-break: break-word;
}

.cr-resource-download {
  font-size: 26px;
  color: #8dc63f;
}

/* ---------- sidebar: lessons, instructor, materials ---------- */

.cr-sidebar-content {
  padding-top: 20px;
}

.cr-lessons {
  margin-bottom: 32px;
}

.cr-lesson {
  display: flex;
  width: 100%;
  padding: 0;
  border: 0;
  border-bottom: 1px solid var(--cp-line);
  background: none;
  font-family: inherit;
  text-align: left;
  cursor: pointer;
}

.cr-lesson.current {
  background: #f8fafb;
}

/* session video: thumbnail (as the class page's session cards) with its progress bar below */
.cr-lesson-media {
  display: flex;
  flex: 0 0 128px;
  flex-direction: column;
  gap: 8px;
  padding: 16px 0 16px 8px;
}

.cr-lesson-thumb {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: 6px;
  overflow: hidden;
  background: #e9ebef;
}

.cr-lesson-thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cr-lesson-badge {
  position: absolute;
  top: 50%;
  left: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding-left: 2px; /* centres the play triangle */
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.45);
  color: #fff;
  font-size: 12px;
  transform: translate(-50%, -50%);
}

.cr-lesson-badge.done {
  padding-left: 0;
  background: #4993cc;
  font-size: 13px;
}

/* v2 #myProgress / #myBar */
.cr-lesson-progress {
  display: block;
  height: 6px;
  border-radius: 3px;
  overflow: hidden;
  background: #ddd;
}

.cr-lesson-progress span {
  display: block;
  height: 100%;
  background: #4caf50;
}

.cr-lesson-info {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  padding: 14px 16px;
}

/* number + title as the class page's session cards ("SESSION 1" / session title) */
.cr-lesson-number {
  font-size: 18px;
  font-weight: 600;
  line-height: 22px;
  text-transform: uppercase;
  color: #67748c;
}

.cr-lesson-title {
  font-size: 14px;
  font-weight: 600;
  line-height: 19px;
  color: var(--cp-text);
  word-break: break-word;
}

.cr-instructor {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 40px;
  padding: 31px 40px;
  border: 2px solid #e4e4e5;
  border-radius: 0;
  text-align: center;
}

.cr-instructor-photo {
  width: 84px;
  height: 84px;
  border-radius: 50%;
  object-fit: cover;
}

/* .cp-instructor-name gives the font */
.cr-instructor-name {
  margin: 12px 0;
}

/* v2 .information-instructor + blockquote h3:before / :after (css/style.css): light blue
   Georgia quote marks, the opening one left of the first line, the closing one under the
   text at the right */
.cr-instructor-quote {
  width: 80%;
  margin: 19px auto 0;
  padding: 0;
  font-size: 14px;
  font-style: italic;
  line-height: 19px;
  text-align: center;
  color: #909aaf;
  opacity: 0.8;
}

.cr-instructor-quote::before,
.cr-instructor-quote::after {
  display: inline-block;
  font-family: Georgia, "Times New Roman", Times, serif;
  font-size: 38px;
  font-weight: bold;
  /* like v2: no own line-height / font-style, so the marks keep the text's 19px line and
     italics and sit level with the first and last lines */
  color: #d9eef7;
}

.cr-instructor-quote::before {
  content: "\201C";
  float: left;
  margin: 11px 0 0 -20px;
  padding-right: 5px;
}

/* closing mark on its own line under the text, at the right (as the live box shows it) */
.cr-instructor-quote::after {
  content: "\201D";
  display: block;
  margin: 10px 14px 0 0;
  text-align: right;
}

.cr-materials-body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* as the class page sidebar text (.cp-col-side .cp-text) */
.cr-materials-text {
  font-size: 16px;
  line-height: 24px;
  color: var(--cp-text);
  word-break: break-word;
}

.cr-materials-text p {
  margin: 0 0 16px;
}

/* the review popup lives in <rating-element>; its star row isn't shown on this page */
.cr-review-host {
  height: 0;
  overflow: hidden;
}

/* ---------- responsive ---------- */

@media (max-width: 768px) {
  .cr-layout {
    display: block;
  }

  .cr-title {
    margin: 16px 0 20px;
  }

  .cr-video {
    margin: 0 -12px 28px;
  }

  .cr-resource {
    gap: 14px;
    padding-right: 16px;
  }

  .cr-resource-icon {
    width: 72px;
  }

  .cr-button {
    width: 100%;
  }
}

#pikaday-container {
    font-family: "Open Sans", sans-serif !important;
    z-index: 9999 !important;
    opacity: 0;
    transform: translateY(10px); /* Start slightly lower */
    transition: opacity 0.3s ease-out, transform 0.3s ease-out;
    display: none;
  }

  #pikaday-container .pika-single {
    font-family: "Open Sans", sans-serif;
    background: #fff;
    border: 1px solid #c5c5c5;
    border-radius: 5px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
    padding: 10px;
  }

  #pikaday-container .pika-title {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    background: #f7f7f7 !important;
    padding: 8px !important;
    border-radius: 4px 4px 0 0 !important;
    border-bottom: 1px solid #ddd !important;
  }

  #pikaday-container .pika-prev,
  #pikaday-container .pika-next {
    border: 1px solid #ccc !important;
    color: #333 !important;
    padding: 5px 10px !important;
    cursor: pointer !important;
    border-radius: 3px !important;
  }

  #pikaday-container .pika-prev:hover,
  #pikaday-container .pika-next:hover {
    background: #ddd !important;
  }

  #pikaday-container .pika-table th {
    background: #f7f7f7 !important;
    color: #333 !important;
    padding: 5px !important;
    font-weight: bold !important;
    border-bottom: 1px solid #ddd !important;
  }

  #pikaday-container .pika-table abbr {
    border-bottom: none;
    cursor: auto;
    border: 0;
    text-decoration: auto;
    color: black;
  }

  #pikaday-container .pika-button {
    color: #333 !important;
    padding: 9px 10px !important;
    vertical-align: top !important;
    border: none !important;
    background: transparent !important;
    transition: 0.2s !important;
  }

  /* Active Date Styling */
  .pika-single .pika-button.active-date {
    color: #97c940 !important;
  }

  /* Disabled Dates */
  .pika-single .is-disabled .pika-button {
    background: transparent !important;
    color: #333 !important;
    cursor: not-allowed;
    opacity: 0.6;
  }

  #pikaday-container .pika-button:hover {
    color: #0493cc !important;
    background: transparent !important;
  }


  #pikaday-container .is-disabled .pika-button {
    background: #eee !important;
    color: #bbb !important;
    cursor: not-allowed !important;
  }
