*{box-sizing:border-box}

:root{
    --pink:#f31968;
    --pink-dark:#d80e55;
    --ink:#191b24;
    --text:#5d616b;
    --line:#e6e7eb;
}

html{scroll-behavior:smooth}

body.v17-body{
    margin:0;
    background:#fff;
    color:var(--text);
    font-family:"Open Sans",Arial,sans-serif;
}

a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button,input,select{font:inherit}


/* ==========================================================
   BOOTSTRAP 5 CONTAINER DIMENSIONS
   xs        fluid
   sm 576    540px
   md 768    720px
   lg 992    960px
   xl 1200   1140px
   xxl 1400  1320px
   ========================================================== */

.v17-container{
    width:100%;
    margin:0 auto;
    padding-left:12px;
    padding-right:12px;
}

@media(min-width:576px){
    .v17-container{max-width:540px}
}

@media(min-width:768px){
    .v17-container{max-width:720px}
}

@media(min-width:992px){
    .v17-container{max-width:960px}
}

@media(min-width:1200px){
    .v17-container{max-width:1140px}
}

@media(min-width:1400px){
    .v17-container{max-width:1320px}
}


/* ==========================================================
   HEADER
   ========================================================== */

.v17-header{
    position:sticky;
    top:0;
    z-index:1000;
    background:#fff;
    border-bottom:1px solid var(--line);
    box-shadow:0 2px 10px rgba(0,0,0,.035);
}

.v17-header-row{
    height:70px;
    display:flex;
    align-items:center;
    gap:22px;
}

.v17-logo{
    flex:0 0 auto;
}

.v17-logo img{
    width:194px;
}

.v17-nav{
    display:flex;
    align-items:center;
    gap:5px;
}

.v17-nav>a,
.v17-category-button{
    min-height:36px;
    padding:8px 13px;
    display:flex;
    align-items:center;
    border:0;
    border-radius:20px;
    background:transparent;
    color:#3d4048;
    font-size:14px;
    white-space:nowrap;
    cursor:pointer;
}

.v17-nav>a.active{
    color:var(--pink);
    background:#fff0f6;
    font-weight:700;
}

.v17-nav>a:hover,
.v17-category-button:hover{
    color:var(--pink);
}

.v17-category-button span{
    margin-left:5px;
    color:#8b8e96;
    font-size:11px;
}

.v17-categories{
    position:relative;
}

.v17-category-menu{
    position:absolute;
    top:46px;
    left:0;
    width:205px;
    padding:8px 0;
    display:none;
    background:#fff;
    border:1px solid #ececf0;
    border-radius:3px;
    box-shadow:0 4px 18px rgba(0,0,0,.12);
}

.v17-categories:hover>.v17-category-menu,
.v17-categories.open>.v17-category-menu{
    display:block;
}

.v17-category-menu>a,
.v17-flyout-trigger{
    min-height:31px;
    padding:7px 24px;
    display:flex;
    align-items:center;
    color:#686b73;
    font-size:15px;
    line-height:1.2;
}

.v17-category-menu>a:hover,
.v17-flyout-item:hover>.v17-flyout-trigger{
    color:var(--pink);
}

.v17-flyout-item{
    position:relative;
}

.v17-flyout-trigger{
    justify-content:space-between;
}

.v17-flyout-trigger b{
    color:#9699a2;
    font-size:20px;
    line-height:1;
    font-weight:400;
}

.v17-flyout-item:hover>.v17-flyout-trigger b{
    color:var(--pink);
}

.v17-submenu{
    position:absolute;
    top:-1px;
    left:198px;
    width:205px;
    padding:9px 0;
    display:none;
    background:#fff;
    border:1px solid #ececf0;
    border-radius:3px;
    box-shadow:0 4px 18px rgba(0,0,0,.12);
}

.v17-flyout-item:hover>.v17-submenu{
    display:block;
}

.v17-submenu a{
    display:block;
    padding:6px 24px;
    color:#737780;
    font-size:15px;
}

.v17-submenu a:hover{
    color:var(--pink);
}

.v17-signin{
    margin-left:auto;
    height:38px;
    padding:0 14px;
    display:flex;
    align-items:center;
    gap:7px;
    border-radius:20px;
    background:#f8f8f8;
    color:#777a82;
    font-size:14px;
    white-space:nowrap;
}

.v17-account-link{
    margin-left:auto;
    height:38px;
    padding:0 14px;
    display:flex;
    align-items:center;
    gap:7px;
    border:1px solid #ddd7f5;
    border-radius:20px;
    background:#f3f0ff;
    color:#4a2d91;
    font-size:14px;
    font-weight:700;
    white-space:nowrap;
    text-decoration:none;
}

.v17-account-link:hover{
    background:#ebe5ff;
    border-color:#cfc4f2;
    color:#351d79;
}

.v17-account-link.is-admin{
    background:#eef2ff;
    border-color:#d9e0fb;
    color:#2f438f;
}

.v17-account-link.is-admin:hover{
    background:#e5ebff;
    border-color:#c7d2f5;
    color:#253779;
}

.v17-signout{
    height:38px;
    padding:0 12px;
    display:flex;
    align-items:center;
    gap:6px;
    border:1px solid #e5e6eb;
    border-radius:20px;
    background:#fff;
    color:#666a73;
    font-size:13.5px;
    font-weight:600;
    white-space:nowrap;
}

.v17-signout:hover{
    border-color:#d7d9e0;
    background:#f8f8fa;
    color:#2f3140;
}

.v17-mobile-toggle{
    display:none;
    width:42px;
    height:42px;
    margin-left:auto;
    border:1px solid #dddfe6;
    border-radius:11px;
    background:#fff;
    font-size:22px;
    cursor:pointer;
}

.v17-mobile-menu{
    display:none;
    padding:9px 16px 15px;
    background:#fff;
    border-top:1px solid var(--line);
}

.v17-mobile-menu.open{
    display:block;
}

.v17-mobile-menu>a,
.v17-mobile-menu summary{
    display:block;
    padding:10px 4px;
    color:#33343a;
    font-size:14px;
}

.v17-mobile-menu details{
    border-top:1px solid #f1f1f4;
    border-bottom:1px solid #f1f1f4;
}

.v17-mobile-submenu{
    padding:0 0 8px 12px;
}

.v17-mobile-submenu a{
    display:block;
    padding:5px 0;
    color:#777983;
    font-size:12px;
}


/* ==========================================================
   HERO — XS FIRST
   ========================================================== */

.v17-hero{
    background:linear-gradient(120deg,#ffeaf5 0%,#f8efff 43%,#e4f3ff 100%);
}

.v17-hero-grid{
    display:grid;
    grid-template-columns:1fr;
    align-items:center;
    padding-top:34px;
    padding-bottom:34px;
}

.v17-hero-copy{
    min-width:0;
}

.v17-hero-copy h1{
    margin:0;
    color:var(--ink);
    font-family:"Raleway",sans-serif;
    font-size:34px;
    line-height:1.03;
    letter-spacing:-.03em;
    font-weight:800;
}

.v17-title-line{
    display:block;
}

.v17-title-line em{
    color:var(--pink);
    font-style:normal;
}

.v17-hero-copy>p{
    margin:12px 0 17px;
    color:#4f535d;
    font-size:14px;
    line-height:1.45;
}

.v17-search{
    width:100%;
    height:auto;
    padding:7px;
    display:block;
    overflow:hidden;
    border:1px solid #e1e2e7;
    border-radius:12px;
    background:#fff;
    box-shadow:0 8px 24px rgba(42,31,65,.09);
}

.v17-search-part{
    height:48px;
    display:flex;
    align-items:center;
    padding-left:13px;
    border-bottom:1px solid #eee;
}

.v17-search-part>span{
    color:#242631;
    font-size:18px;
}

.v17-search input,
.v17-search select{
    width:100%;
    height:46px;
    padding:0 10px;
    border:0;
    outline:0;
    background:transparent;
    color:#555761;
    font-size:12px;
}

.v17-search button{
    width:100%;
    height:45px;
    margin:7px 0 0;
    border:0;
    border-radius:9px;
    background:var(--pink);
    color:#fff;
    font-weight:700;
    cursor:pointer;
}

.v17-search button:hover{
    background:var(--pink-dark);
}

.v17-stats{
    margin-top:14px;
    display:flex;
    align-items:center;
    gap:16px;
    flex-wrap:wrap;
}

.v17-stat{
    display:flex;
    align-items:center;
    gap:11px;
}

.v17-stat-divider{
    display:none;
}

.v17-stat-icon{
    width:45px;
    height:45px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:13px;
    font-size:23px;
}

.v17-stat-icon.listings{
    background:#dcecff;
    color:#367fda;
}

.v17-stat-icon.provider-icon{
    background:#ffe0ed;
    color:#ed397a;
}

.v17-stat strong{
    display:block;
    color:#20242f;
    font-size:19px;
    line-height:1.05;
}

.v17-stat.providers strong{
    color:#e32678;
}

.v17-stat small{
    display:block;
    margin-top:2px;
    color:#686b75;
    font-size:11px;
}

.v17-hero-art{
    display:none;
}


/* ==========================================================
   SM >=576px
   ========================================================== */

@media(min-width:576px){

    .v17-hero-copy h1{
        font-size:42px;
    }

    .v17-title-line{
        white-space:nowrap;
    }

    .v17-hero-copy>p{
        font-size:15px;
    }
}


/* ==========================================================
   MD >=768px
   One-column hero, horizontal search, image hidden
   ========================================================== */

@media(min-width:768px){

    .v17-hero-grid{
        padding-top:40px;
        padding-bottom:40px;
    }

    .v17-hero-copy h1{
        font-size:50px;
        line-height:1;
    }

    .v17-hero-copy>p{
        margin:12px 0 17px;
        font-size:16px;
    }

    .v17-search{
        max-width:650px;
        height:56px;
        padding:0;
        display:grid;
        grid-template-columns:1.35fr 1fr 122px;
        align-items:center;
    }

    .v17-search-part{
        height:40px;
        border-bottom:0;
        border-right:1px solid #ececf0;
    }

    .v17-search input,
    .v17-search select{
        height:40px;
    }

    .v17-search button{
        width:auto;
        height:42px;
        margin:0 8px 0 0;
    }

    .v17-stat-divider{
        display:block;
        width:1px;
        height:42px;
        background:#d3d4db;
    }
}


/* ==========================================================
   LG >=992px
   Desktop navigation + 2-column hero
   ========================================================== */

@media(min-width:992px){

    .v17-hero-grid{
        min-height:260px;
        grid-template-columns:minmax(0,1.18fr) minmax(0,1fr);
        gap:0;
        padding-top:0;
        padding-bottom:0;
    }

    .v17-hero-copy h1{
        font-size:48px;
        line-height:.99;
    }

    .v17-hero-copy>p{
        max-width:555px;
        margin:10px 0 14px;
        font-size:15px;
    }

    .v17-search{
        max-width:100%;
    }

    .v17-hero-art{
        min-width:0;
        height:260px;
        display:flex;
        align-items:flex-end;
        justify-content:flex-start;
        overflow:visible;
    }

    .v17-hero-art img{
        width:auto;
        height:225px;
        max-width:100%;
        object-fit:contain;
        filter:drop-shadow(0 12px 22px rgba(38,31,70,.10));
    }
}


/* ==========================================================
   XL >=1200px
   Larger desktop
   ========================================================== */

@media(min-width:1200px){

    .v17-hero-grid{
        min-height:282px;
    }

    .v17-hero-copy h1{
        font-size:56px;
    }

    .v17-hero-copy>p{
        margin:11px 0 15px;
        font-size:16px;
    }

    .v17-search{
        max-width:650px;
    }

    .v17-hero-art{
        height:282px;
    }

    .v17-hero-art img{
        height:250px;
    }
}


/* ==========================================================
   XXL >=1400px
   V11 headline scale and height
   ========================================================== */

@media(min-width:1400px){

    .v17-hero-grid{
        min-height:292px;
    }

    .v17-hero-copy h1{
        font-size:62px;
        line-height:.98;
    }

    .v17-hero-copy>p{
        margin:12px 0 17px;
        font-size:17px;
    }

    .v17-hero-art{
        height:292px;
    }

    .v17-hero-art img{
        height:268px;
        transform:translateX(-28px);
    }
}


/* ==========================================================
   NAVIGATION COLLAPSE AT BOOTSTRAP LG
   ========================================================== */

@media(max-width:991.98px){

    .v17-nav,
    .v17-signin,
    .v17-account-link,
    .v17-signout{
        display:none;
    }

    .v17-mobile-toggle{
        display:flex;
        align-items:center;
        justify-content:center;
        margin-left:auto;
    }
}


/* LG desktop header needs a little tightening inside 960px */
@media(min-width:992px) and (max-width:1199.98px){

    .v17-header-row{
        gap:13px;
    }

    .v17-logo img{
        width:172px;
    }

    .v17-nav>a,
    .v17-category-button{
        padding-left:8px;
        padding-right:8px;
        font-size:13px;
    }

    .v17-signin{
        padding-left:11px;
        padding-right:11px;
        font-size:13px;
    }

    .v17-account-link{
        height:36px;
        padding-left:11px;
        padding-right:11px;
        font-size:13px;
    }

    .v17-signout{
        height:36px;
        padding-left:9px;
        padding-right:9px;
        font-size:12.5px;
    }
}


/* V17.1 - Published Listings icon */
.v17-listings-svg{
    width:24px;
    height:24px;
    display:block;
}

.v17-stat-icon.listings{
    background:#2f9cf3;
    color:#fff;
    border-radius:50%;
}


/* V17.2 - Providers icon */
.v17-stat-icon.provider-icon{
    background:#ffd7e8;
    color:#e82a78;
    border-radius:50%;
}

.v17-providers-svg{
    width:27px;
    height:27px;
    display:block;
}


/* ==========================================================
   V17.3 FIXES
   - fluid page content with 1320px maximum
   - stable Categories hover menu
   - aligned CSS chevron
   - search dropdown accommodates real category names
   ========================================================== */

/* Keep Bootstrap 5 breakpoints for responsive behavior, but let the
   page content grow fluidly up to a maximum of 1320px. */
.v17-container{
    width:calc(100% - 24px);
    max-width:1320px;
    padding-left:12px;
    padding-right:12px;
}

/* Remove the hover gap between Categories and its dropdown. */
.v17-category-menu{
    top:100%;
    margin-top:0;
}

/* Invisible bridge also protects against sub-pixel/browser rounding gaps. */
.v17-category-menu::before{
    content:"";
    position:absolute;
    left:0;
    top:-6px;
    width:100%;
    height:6px;
}

/* Replace the low text glyph with a properly centered CSS chevron. */
.v17-category-button .v17-chevron{
    width:7px;
    height:7px;
    margin-left:7px;
    border-right:1.5px solid currentColor;
    border-bottom:1.5px solid currentColor;
    transform:translateY(-2px) rotate(45deg);
    flex:0 0 auto;
    color:#8b8e96;
}

/* Do not apply the old span font-size rule to the CSS chevron. */
.v17-category-button .v17-chevron{
    font-size:0;
}

/* Give real category names enough room in the search select. */
.v17-search select{
    min-width:0;
    text-overflow:ellipsis;
}

/* xs: preserve full mobile width with the same 12px Bootstrap-style gutters. */
@media(max-width:575.98px){
    .v17-container{
        width:100%;
    }
}


/* ==========================================================
   V17.4 HERO + SEARCH REFINEMENTS
   ========================================================== */

/* Previous request: keep Sign In with the navigation instead of
   pushing it to the far-right edge of the 1320px container. */
.v17-signin{
    margin-left:20px;
}

/* More breathing room above the headline and below the stats. */
@media(min-width:992px){
    .v17-hero-grid{
        min-height:0;
        padding-top:28px;
        padding-bottom:26px;
    }
}

@media(min-width:1200px){
    .v17-hero-grid{
        min-height:0;
        padding-top:30px;
        padding-bottom:28px;
    }
}

@media(min-width:1400px){
    .v17-hero-grid{
        min-height:0;
        padding-top:32px;
        padding-bottom:30px;
    }
}

/* Let the artwork use almost the full width of its own hero column.
   It remains normal grid content, so it cannot cover the copy. */
@media(min-width:992px){
    .v17-hero-art{
        height:auto;
        min-height:0;
        align-self:stretch;
        display:flex;
        align-items:center;
        justify-content:flex-end;
    }

    .v17-hero-art img{
        width:96%;
        height:auto;
        max-width:none;
        max-height:none;
        object-fit:contain;
        transform:none;
    }
}

@media(min-width:1400px){
    .v17-hero-art img{
        width:98%;
        transform:translateX(-8px);
    }
}

/* Styled category picker inside the search bar. */
.v17-search{
    overflow:visible;
}

.v17-search-category{
    position:relative;
    padding-left:0;
}

.v17-search-category-button{
    width:100%;
    height:40px;
    padding:0 12px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    border:0;
    background:transparent;
    color:#555761;
    font-size:12px;
    text-align:left;
    cursor:pointer;
}

.v17-search-category-label{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.v17-search-category-chevron{
    width:7px;
    height:7px;
    flex:0 0 auto;
    margin-right:2px;
    border-right:1.5px solid #858891;
    border-bottom:1.5px solid #858891;
    transform:translateY(-2px) rotate(45deg);
    transition:transform .15s ease;
}

.v17-search-category.open .v17-search-category-chevron{
    transform:translateY(2px) rotate(225deg);
}

.v17-search-category-menu{
    position:absolute;
    top:calc(100% + 9px);
    left:-1px;
    z-index:1300;
    width:235px;
    max-height:360px;
    padding:8px 0;
    overflow-y:auto;
    display:none;
    background:#fff;
    border:1px solid #ececf0;
    border-radius:5px;
    box-shadow:0 5px 20px rgba(0,0,0,.13);
}

.v17-search-category.open .v17-search-category-menu{
    display:block;
}

/* small invisible bridge so the pointer can move into the popup */
.v17-search-category-menu::before{
    content:"";
    position:absolute;
    left:0;
    top:-9px;
    width:100%;
    height:9px;
}

.v17-search-category-option{
    width:100%;
    min-height:32px;
    padding:7px 22px;
    display:block;
    border:0;
    background:#fff;
    color:#686b73;
    font-size:14px;
    line-height:1.25;
    text-align:left;
    cursor:pointer;
}

.v17-search-category-option:hover,
.v17-search-category-option:focus,
.v17-search-category-option.selected{
    color:var(--pink);
    background:#fff6fa;
    outline:0;
}

/* Child categories are visibly nested under their parent category. */
.v17-search-category-option.is-child{
    padding-left:38px;
    color:#777b84;
    font-size:13px;
}

.v17-search-category-option.is-child::before{
    content:"";
    display:inline-block;
    width:7px;
    height:1px;
    margin:0 8px 4px 0;
    background:#c7c9cf;
}

.v17-search-category-option.is-child:hover,
.v17-search-category-option.is-child:focus,
.v17-search-category-option.is-child.selected{
    color:var(--pink);
}

/* Bigger, clean search icon. */
.v17-search-submit{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:7px;
}

.v17-search-submit-icon{
    width:20px;
    height:20px;
    flex:0 0 20px;
}

/* Mobile search-category popup should fit the whole field. */
@media(max-width:767.98px){
    .v17-search-category{
        height:48px;
    }

    .v17-search-category-button{
        height:47px;
    }

    .v17-search-category-menu{
        top:calc(100% + 4px);
        left:0;
        width:100%;
        max-height:300px;
    }
}


/* ==========================================================
   V17.5 FIXES
   ========================================================== */

/* Put Sign In back at the right side of the header container. */
.v17-signin{
    margin-left:auto;
}

/* Search category control should use neutral text, not pink/red. */
.v17-search-category-button{
    color:#555761;
}

/* Keep selected category neutral. Pink is only for hover/focus. */
.v17-search-category-option.selected{
    color:#555761;
    background:#fff;
    font-weight:600;
}

.v17-search-category-option.is-child.selected{
    color:#666a73;
    background:#fff;
}

/* Hover/focus stays consistent with the header menu. */
.v17-search-category-option:hover,
.v17-search-category-option:focus,
.v17-search-category-option.is-child:hover,
.v17-search-category-option.is-child:focus{
    color:var(--pink);
    background:#fff6fa;
}


/* ==========================================================
   V17.6 - SEARCH CATEGORY COLOR FIX
   The generic ".v17-search button" rule was overriding the
   category dropdown buttons because it has higher specificity.
   These selectors intentionally override that generic rule.
   ========================================================== */

/* Main category selector inside the search bar */
.v17-search .v17-search-category-button{
    width:100%;
    height:40px;
    margin:0;
    padding:0 12px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    border:0;
    border-radius:0;
    background:transparent;
    color:#555761;
    font-size:12px;
    font-weight:400;
    text-align:left;
    box-shadow:none;
}

/* Dropdown rows */
.v17-search .v17-search-category-option{
    width:100%;
    min-height:32px;
    height:auto;
    margin:0;
    padding:7px 22px;
    display:block;
    border:0;
    border-radius:0;
    background:#fff;
    color:#686b73;
    font-size:14px;
    font-weight:400;
    line-height:1.25;
    text-align:left;
    box-shadow:none;
}

/* Selected item stays neutral, not pink/red */
.v17-search .v17-search-category-option.selected{
    background:#fff;
    color:#555761;
    font-weight:600;
}

/* Child categories */
.v17-search .v17-search-category-option.is-child{
    padding-left:38px;
    background:#fff;
    color:#777b84;
    font-size:13px;
    font-weight:400;
}

.v17-search .v17-search-category-option.is-child.selected{
    background:#fff;
    color:#666a73;
    font-weight:600;
}

/* Pink only while hovering/focusing an item */
.v17-search .v17-search-category-option:hover,
.v17-search .v17-search-category-option:focus,
.v17-search .v17-search-category-option.is-child:hover,
.v17-search .v17-search-category-option.is-child:focus{
    background:#fff6fa;
    color:var(--pink);
    outline:0;
}

/* Only the actual Search submit button should be pink */
.v17-search .v17-search-submit{
    width:auto;
    height:42px;
    margin:0 8px 0 0;
    padding:0 14px;
    border-radius:9px;
    background:var(--pink);
    color:#fff;
    font-weight:700;
}

@media(max-width:767.98px){
    .v17-search .v17-search-category-button{
        height:47px;
    }

    .v17-search .v17-search-submit{
        width:100%;
        height:45px;
        margin:7px 0 0;
    }
}


/* ==========================================================
   V17.7 - SEARCH CATEGORY BUTTON HOVER FIX
   The generic ".v17-search button:hover" rule was still making
   the main Categories selector pink/red on hover.
   Keep this selector neutral in normal, hover, focus and open states.
   ========================================================== */

.v17-search .v17-search-category-button,
.v17-search .v17-search-category-button:hover,
.v17-search .v17-search-category-button:focus,
.v17-search .v17-search-category-button:active,
.v17-search-category.open .v17-search-category-button{
    background:transparent !important;
    color:#555761 !important;
    border:0 !important;
    box-shadow:none !important;
    outline:none;
}

/* Keep the chevron neutral too. */
.v17-search .v17-search-category-button .v17-search-category-chevron{
    border-color:#858891 !important;
}


/* ==========================================================
   V17.8 - CATEGORIES ROW
   Six real categories from dbo.Categories
   ========================================================== */

.v17-categories-row{
    padding:22px 0 24px;
    background:#fff;
}

.v17-category-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
}

.v17-category-card{
    min-width:0;
    min-height:72px;
    padding:10px 14px;
    display:flex;
    align-items:center;
    gap:12px;
    border:1px solid #ececf1;
    border-radius:18px;
    background:#fff;
    color:#30323a;
    box-shadow:0 5px 16px rgba(36,31,60,.055);
    transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.v17-category-card:hover{
    transform:translateY(-2px);
    border-color:#e1e2e8;
    box-shadow:0 8px 20px rgba(36,31,60,.09);
}

.v17-category-card-icon{
    width:48px;
    height:48px;
    flex:0 0 48px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:15px;
}

.v17-category-card-icon svg{
    width:25px;
    height:25px;
    display:block;
}

.v17-category-card-text{
    min-width:0;
    color:#2f3138;
    font-size:14px;
    line-height:1.2;
    font-weight:700;
}

/* six soft category treatments */
.v17-category-online .v17-category-card-icon{
    background:#efe6ff;
    color:#7b55d8;
}

.v17-category-classes .v17-category-card-icon{
    background:#ffe5ef;
    color:#ea397c;
}

.v17-category-activities .v17-category-card-icon{
    background:#e4f4ff;
    color:#2694da;
}

.v17-category-camps .v17-category-card-icon{
    background:#e5f8ed;
    color:#36a46b;
}

.v17-category-arts .v17-category-card-icon{
    background:#fff0dc;
    color:#e38a2d;
}

.v17-category-music .v17-category-card-icon{
    background:#e9edff;
    color:#5c6fe0;
}

/* Bootstrap 5 breakpoints only */
@media(min-width:576px){
    .v17-category-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

@media(min-width:768px){
    .v17-categories-row{
        padding-top:24px;
        padding-bottom:26px;
    }

    .v17-category-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:14px;
    }
}

@media(min-width:1200px){
    .v17-category-grid{
        grid-template-columns:repeat(6,minmax(0,1fr));
        gap:14px;
    }

    .v17-category-card{
        min-height:78px;
        padding-left:12px;
        padding-right:12px;
    }

    .v17-category-card-text{
        font-size:13px;
    }
}

@media(min-width:1400px){
    .v17-category-card{
        padding-left:15px;
        padding-right:15px;
    }

    .v17-category-card-text{
        font-size:14px;
    }
}


/* ==========================================================
   V17.9 - CATEGORY CARD BACKGROUNDS
   Make the full card use the same soft color family as its icon.
   ========================================================== */

.v17-category-card{
    border-color:transparent;
    box-shadow:none;
}

.v17-category-card:hover{
    border-color:transparent;
    box-shadow:0 8px 20px rgba(36,31,60,.08);
}

/* Online */
.v17-category-card.v17-category-online{
    background:#efe6ff;
}
.v17-category-online .v17-category-card-icon{
    background:#efe6ff;
}

/* In-Person Classes */
.v17-category-card.v17-category-classes{
    background:#ffe5ef;
}
.v17-category-classes .v17-category-card-icon{
    background:#ffe5ef;
}

/* Activities & Events */
.v17-category-card.v17-category-activities{
    background:#e4f4ff;
}
.v17-category-activities .v17-category-card-icon{
    background:#e4f4ff;
}

/* Camps */
.v17-category-card.v17-category-camps{
    background:#e5f8ed;
}
.v17-category-camps .v17-category-card-icon{
    background:#e5f8ed;
}

/* Arts */
.v17-category-card.v17-category-arts{
    background:#fff0dc;
}
.v17-category-arts .v17-category-card-icon{
    background:#fff0dc;
}

/* Music */
.v17-category-card.v17-category-music{
    background:#e9edff;
}
.v17-category-music .v17-category-card-icon{
    background:#e9edff;
}

/* Slightly emphasize the icon without introducing another color block. */
.v17-category-card-icon{
    border:1px solid rgba(255,255,255,.55);
}


/* ==========================================================
   V17.10 - CATEGORY ROW POLISH
   ========================================================== */

/* Slightly shorter, cleaner row cards. */
.v17-category-card{
    min-height:62px;
    padding:8px 13px;
    gap:11px;
    border-radius:16px;
}

/* The whole card is already pastel, so remove the separate icon tile. */
.v17-category-card-icon{
    width:38px;
    height:38px;
    flex:0 0 38px;
    border:0 !important;
    border-radius:0;
    background:transparent !important;
}

/* Larger, more distinctive free Bootstrap Icons. */
.v17-category-card-icon i{
    display:block;
    font-size:30px;
    line-height:1;
}

/* Keep each icon in its category accent color. */
.v17-category-online .v17-category-card-icon{
    color:#7650cf;
}

.v17-category-classes .v17-category-card-icon{
    color:#e53378;
}

.v17-category-activities .v17-category-card-icon{
    color:#258fd2;
}

.v17-category-camps .v17-category-card-icon{
    color:#319a63;
}

.v17-category-arts .v17-category-card-icon{
    color:#d98227;
}

.v17-category-music .v17-category-card-icon{
    color:#596bd7;
}

.v17-category-card-text{
    font-size:14px;
}

/* Reduce the overall height of the module a little. */
.v17-categories-row{
    padding-top:16px;
    padding-bottom:18px;
}

@media(min-width:768px){
    .v17-categories-row{
        padding-top:18px;
        padding-bottom:20px;
    }
}

@media(min-width:1200px){
    .v17-category-card{
        min-height:62px;
        padding:8px 11px;
    }

    .v17-category-card-text{
        font-size:13px;
    }
}

@media(min-width:1400px){
    .v17-category-card{
        padding-left:13px;
        padding-right:13px;
    }

    .v17-category-card-text{
        font-size:14px;
    }
}


/* ==========================================================
   V17.11 - CATEGORY ICON SIZE + CAMP ICON FIX
   ========================================================== */

/* Make all category icons a little larger without changing card height. */
.v17-category-card-icon{
    width:42px;
    height:42px;
    flex:0 0 42px;
}

/* Bootstrap icons */
.v17-category-card-icon i{
    font-size:34px;
    line-height:1;
}

/* Inline camp/tent SVG */
.v17-category-card-icon .v17-camp-svg{
    width:36px;
    height:36px;
    display:block;
}

/* Keep the cards at the same compact height. */
.v17-category-card{
    min-height:62px;
    padding-top:8px;
    padding-bottom:8px;
}

@media(min-width:1200px){
    .v17-category-card{
        min-height:62px;
    }
}


/* ==========================================================
   V17.12 - ONLINE CLASSES SPOTLIGHT
   Bootstrap 5 breakpoints only
   ========================================================== */

.v17-online-spotlight{
    padding:4px 0 28px;
    background:#fff;
}

.v17-online-card{
    position:relative;
    min-height:174px;
    display:grid;
    grid-template-columns:1fr;
    overflow:hidden;
    border-radius:20px;

    /* layered pastel background based on the approved screenshots */
    background:
        radial-gradient(circle at 3% 0%,
            rgba(255,255,255,.58) 0 52px,
            rgba(255,255,255,0) 53px),
        radial-gradient(circle at 77% 118%,
            rgba(255,255,255,.24) 0 185px,
            rgba(255,255,255,0) 186px),
        linear-gradient(108deg,
            #fde8ff 0%,
            #f6ebff 37%,
            #eee5ff 69%,
            #f9e2ff 100%);
}

.v17-online-card::before{
    content:"";
    position:absolute;
    width:180px;
    height:180px;
    left:-72px;
    top:-98px;
    border-radius:50%;
    background:rgba(255,255,255,.22);
    pointer-events:none;
}

.v17-online-card::after{
    content:"";
    position:absolute;
    width:235px;
    height:235px;
    right:210px;
    bottom:-178px;
    border-radius:50%;
    background:rgba(255,255,255,.17);
    pointer-events:none;
}

.v17-online-art{
    position:relative;
    z-index:2;
    min-width:0;
    display:flex;
    align-items:flex-end;
    justify-content:center;
}

.v17-online-art img{
    display:block;
    width:auto;
    height:154px;
    max-width:96%;
    object-fit:contain;
}

.v17-online-copy{
    position:relative;
    z-index:2;
    padding:0 22px 18px;
    text-align:center;
}

.v17-online-copy h2{
    margin:0 0 7px;
    color:#40208d;
    font-family:"Raleway",sans-serif;
    font-size:24px;
    line-height:1.08;
    font-weight:800;
    letter-spacing:-.02em;
}

.v17-online-copy p{
    max-width:760px;
    margin:0 auto;
    color:#3f4250;
    font-size:13px;
    line-height:1.45;
}

.v17-online-action{
    position:relative;
    z-index:3;
    min-height:92px;
    padding:10px 86px 18px 22px;
    display:flex;
    align-items:center;
    justify-content:center;
}

.v17-online-button{
    position:relative;
    z-index:2;
    min-height:48px;
    padding:0 19px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:12px;
    border-radius:9px;
    background:#f20d62;
    color:#fff;
    font-size:14px;
    line-height:1;
    font-weight:700;
    box-shadow:0 7px 16px rgba(242,13,98,.17);
    transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
}

.v17-online-button:hover{
    transform:translateY(-1px);
    background:#df0b58;
    box-shadow:0 9px 19px rgba(242,13,98,.23);
}

.v17-online-button svg{
    width:20px;
    height:20px;
    flex:0 0 20px;
}

/* Dotted diagonal ornament to the RIGHT of the button. */
.v17-online-dots{
    position:absolute;
    z-index:1;
    right:20px;
    top:50%;
    width:74px;
    height:74px;
    background-image:radial-gradient(circle, rgba(211,73,239,.82) 2px, transparent 2.3px);
    background-size:10px 10px;
    transform:translateY(-50%) rotate(45deg);
    transform-origin:center;
    opacity:.62;
    pointer-events:none;
}


/* SM >=576 */
@media(min-width:576px){
    .v17-online-copy{
        padding-left:32px;
        padding-right:32px;
    }

    .v17-online-copy h2{
        font-size:26px;
    }

    .v17-online-copy p{
        font-size:13.5px;
    }

    .v17-online-action{
        padding-right:100px;
    }

    .v17-online-dots{
        right:30px;
        width:82px;
        height:82px;
    }
}


/* MD >=768 */
@media(min-width:768px){
    .v17-online-card{
        min-height:182px;
        grid-template-columns:220px minmax(0,1fr);
        grid-template-areas:
            "art copy"
            "art action";
        align-items:center;
    }

    .v17-online-art{
        grid-area:art;
        height:182px;
        align-self:stretch;
    }

    .v17-online-art img{
        height:174px;
        max-width:none;
    }

    .v17-online-copy{
        grid-area:copy;
        align-self:end;
        padding:20px 24px 5px 10px;
        text-align:left;
    }

    .v17-online-copy h2{
        font-size:27px;
    }

    .v17-online-copy p{
        margin:0;
    }

    .v17-online-action{
        grid-area:action;
        min-height:74px;
        padding:4px 105px 18px 10px;
        justify-content:flex-start;
    }

    .v17-online-dots{
        right:28px;
    }
}


/* LG >=992 */
@media(min-width:992px){
    .v17-online-card{
        min-height:184px;
        grid-template-columns:250px minmax(0,1fr) 310px;
        grid-template-areas:"art copy action";
    }

    .v17-online-art{
        height:184px;
    }

    /* image uses almost the full module height */
    .v17-online-art img{
        height:178px;
        max-width:105%;
    }

    .v17-online-copy{
        align-self:center;
        padding:18px 20px 18px 0;
    }

    .v17-online-copy h2{
        margin-bottom:8px;
        font-size:28px;
    }

    .v17-online-copy p{
        font-size:13.5px;
        line-height:1.42;
    }

    .v17-online-action{
        min-height:184px;
        padding:0 92px 0 18px;
        align-items:center;
        justify-content:flex-start;
    }

    .v17-online-dots{
        right:20px;
        width:78px;
        height:78px;
    }
}


/* XL >=1200 */
@media(min-width:1200px){
    .v17-online-card{
        min-height:190px;
        grid-template-columns:270px minmax(0,1fr) 330px;
    }

    .v17-online-art{
        height:190px;
    }

    .v17-online-art img{
        height:185px;
        max-width:108%;
    }

    .v17-online-copy{
        padding-right:24px;
    }

    .v17-online-copy h2{
        font-size:29px;
    }

    .v17-online-copy p{
        font-size:14px;
    }

    .v17-online-action{
        min-height:190px;
        padding-right:96px;
    }

    .v17-online-button{
        min-height:50px;
        padding-left:21px;
        padding-right:21px;
        font-size:15px;
    }

    .v17-online-dots{
        right:18px;
        width:84px;
        height:84px;
    }
}


/* XXL >=1400 */
@media(min-width:1400px){
    .v17-online-card{
        min-height:194px;
        grid-template-columns:285px minmax(0,1fr) 345px;
    }

    .v17-online-art{
        height:194px;
    }

    .v17-online-art img{
        height:190px;
        max-width:110%;
    }

    .v17-online-copy h2{
        font-size:30px;
    }

    .v17-online-action{
        min-height:194px;
        padding-right:100px;
    }

    .v17-online-dots{
        right:20px;
        width:88px;
        height:88px;
    }
}


/* ==========================================================
   V17.13 - SPOTLIGHT + CATEGORY ROUTING FIX
   ========================================================== */

/* Dots removed completely. */
.v17-online-dots{
    display:none !important;
}

/* With no dots, the action area no longer needs reserved right padding. */
.v17-online-action{
    padding-right:22px;
}

/* Keep the CTA on one line at every breakpoint. */
.v17-online-button{
    white-space:nowrap;
    flex-wrap:nowrap;
}

.v17-online-button span{
    white-space:nowrap;
}

@media(min-width:576px){
    .v17-online-action{
        padding-right:32px;
    }
}

@media(min-width:768px){
    .v17-online-action{
        padding-right:24px;
    }
}

@media(min-width:992px){
    .v17-online-action{
        padding-right:24px;
    }
}

@media(min-width:1200px){
    .v17-online-action{
        padding-right:26px;
    }
}

@media(min-width:1400px){
    .v17-online-action{
        padding-right:28px;
    }
}


/* ==========================================================
   V17.14 - THREE REAL-DATA LISTING MODULES
   ========================================================== */

.v17-home-listing-modules{
    padding:6px 0 34px;
    background:#fff;
}

.v17-module-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:28px;
}

.v17-listing-module{
    min-width:0;
}

.v17-module-heading{
    min-height:42px;
    margin-bottom:10px;
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
}

.v17-module-heading h2{
    margin:0;
    color:#1d2028;
    font-family:"Raleway",sans-serif;
    font-size:20px;
    line-height:1.18;
    font-weight:800;
    letter-spacing:-.02em;
}

.v17-module-heading>a{
    flex:0 0 auto;
    margin-top:3px;
    display:inline-flex;
    align-items:center;
    gap:5px;
    color:#7352cb;
    font-size:12px;
    font-weight:700;
    white-space:nowrap;
}

.v17-module-heading>a:hover{
    color:var(--pink);
}

.v17-module-heading>a i{
    font-size:12px;
}

.v17-module-cards{
    display:grid;
    gap:10px;
}

.v17-mini-listing-card{
    min-width:0;
    min-height:102px;
    display:grid;
    grid-template-columns:108px minmax(0,1fr);
    overflow:hidden;
    border:1px solid #e9eaf0;
    border-radius:14px;
    background:#fff;
    color:#30323a;
    box-shadow:0 3px 12px rgba(35,31,57,.045);
    transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}

.v17-mini-listing-card:hover{
    transform:translateY(-2px);
    border-color:#dddfe8;
    box-shadow:0 8px 19px rgba(35,31,57,.09);
}

.v17-mini-image{
    min-width:0;
    min-height:102px;
    overflow:hidden;
    background:#f4f1f8;
}

.v17-mini-image img{
    width:100%;
    height:100%;
    min-height:102px;
    object-fit:cover;
}

.v17-mini-image-fallback{
    width:100%;
    height:100%;
    min-height:102px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:linear-gradient(135deg,#f6eaff,#eaf3ff);
    color:#8062c9;
}

.v17-mini-image-fallback i{
    font-size:30px;
}

.v17-mini-body{
    min-width:0;
    padding:10px 11px 9px;
    display:flex;
    flex-direction:column;
}

.v17-mini-title{
    min-width:0;
    overflow:hidden;
    display:-webkit-box;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
    color:#20232b;
    font-family:"Raleway",sans-serif;
    font-size:14px;
    line-height:1.18;
    font-weight:800;
}

.v17-mini-provider{
    min-width:0;
    margin-top:3px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:#676b75;
    font-size:11.5px;
    line-height:1.3;
}

.v17-mini-meta{
    min-width:0;
    margin-top:auto;
    padding-top:7px;
    display:flex;
    align-items:center;
    gap:8px;
    overflow:hidden;
    color:#5e6370;
    font-size:10.5px;
    line-height:1.1;
}

.v17-mini-meta-item{
    min-width:0;
    display:flex;
    align-items:center;
    gap:4px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.v17-mini-meta-item i{
    flex:0 0 auto;
    color:#6b70a4;
    font-size:12px;
}

.v17-mini-price{
    flex:0 0 auto;
    margin-left:auto;
    color:var(--pink);
    font-size:13px;
    line-height:1;
    font-weight:800;
    white-space:nowrap;
}


/* Bootstrap 5 SM >=576 */
@media(min-width:576px){
    .v17-mini-listing-card{
        grid-template-columns:122px minmax(0,1fr);
        min-height:108px;
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        min-height:108px;
    }

    .v17-mini-title{
        font-size:15px;
    }
}


/* Bootstrap 5 MD >=768 */
@media(min-width:768px){
    .v17-home-listing-modules{
        padding-bottom:38px;
    }

    .v17-module-grid{
        gap:32px;
    }

    .v17-listing-module{
        max-width:720px;
        width:100%;
        margin:0 auto;
    }

    .v17-mini-listing-card{
        grid-template-columns:145px minmax(0,1fr);
        min-height:112px;
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        min-height:112px;
    }

    .v17-mini-body{
        padding:11px 13px 10px;
    }

    .v17-mini-meta{
        gap:13px;
        font-size:11.5px;
    }
}


/* Bootstrap 5 LG >=992: the three modules become three columns */
@media(min-width:992px){
    .v17-module-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:16px;
        align-items:start;
    }

    .v17-listing-module{
        max-width:none;
        margin:0;
    }

    .v17-module-heading{
        min-height:52px;
        margin-bottom:9px;
    }

    .v17-module-heading h2{
        max-width:275px;
        font-size:18px;
    }

    .v17-mini-listing-card{
        grid-template-columns:96px minmax(0,1fr);
        min-height:100px;
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        min-height:100px;
    }

    .v17-mini-body{
        padding:9px 9px 8px;
    }

    .v17-mini-title{
        font-size:13px;
    }

    .v17-mini-provider{
        font-size:10.5px;
    }

    .v17-mini-meta{
        gap:6px;
        font-size:9.5px;
    }

    .v17-mini-price{
        font-size:11.5px;
    }
}


/* Bootstrap 5 XL >=1200 */
@media(min-width:1200px){
    .v17-module-grid{
        gap:18px;
    }

    .v17-module-heading{
        min-height:46px;
    }

    .v17-module-heading h2{
        max-width:310px;
        font-size:19px;
    }

    .v17-mini-listing-card{
        grid-template-columns:108px minmax(0,1fr);
        min-height:104px;
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        min-height:104px;
    }

    .v17-mini-body{
        padding:10px 11px 9px;
    }

    .v17-mini-title{
        font-size:14px;
    }

    .v17-mini-provider{
        font-size:11px;
    }

    .v17-mini-meta{
        gap:8px;
        font-size:10.5px;
    }

    .v17-mini-price{
        font-size:12.5px;
    }
}


/* Bootstrap 5 XXL >=1400 */
@media(min-width:1400px){
    .v17-module-grid{
        gap:20px;
    }

    .v17-module-heading h2{
        max-width:340px;
        font-size:20px;
    }

    .v17-mini-listing-card{
        grid-template-columns:116px minmax(0,1fr);
        min-height:108px;
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        min-height:108px;
    }

    .v17-mini-body{
        padding-left:12px;
        padding-right:12px;
    }

    .v17-mini-title{
        font-size:14.5px;
    }

    .v17-mini-provider{
        font-size:11.5px;
    }

    .v17-mini-meta{
        gap:10px;
        font-size:11px;
    }

    .v17-mini-price{
        font-size:13px;
    }
}


/* ==========================================================
   V17.15 - LISTING CARD LAYOUT POLISH
   Equal heights, less empty space, larger readable typography.
   ========================================================== */

/* Keep all three section headings aligned even when the middle title wraps. */
.v17-module-heading{
    min-height:52px;
    margin-bottom:10px;
    align-items:flex-start;
}

.v17-module-heading h2{
    line-height:1.15;
}

/* Tight, consistent card stack. */
.v17-module-cards{
    gap:9px;
}

/* Fixed card geometry on desktop/tablet so portrait images cannot make cards taller. */
.v17-mini-listing-card{
    height:116px;
    min-height:116px;
    grid-template-columns:116px minmax(0,1fr);
}

.v17-mini-image{
    width:116px;
    height:116px;
    min-height:116px;
}

.v17-mini-image img{
    width:116px;
    height:116px;
    min-height:116px;
    object-fit:cover;
}

.v17-mini-image-fallback{
    width:116px;
    height:116px;
    min-height:116px;
}

/* A strict content structure:
   title -> provider -> flexible space -> one clean metadata row */
.v17-mini-body{
    height:116px;
    min-width:0;
    padding:10px 12px 9px;
    display:grid;
    grid-template-rows:auto auto 1fr auto;
    align-content:stretch;
}

.v17-mini-title{
    min-height:35px;
    max-height:35px;
    font-size:15px;
    line-height:1.16;
    font-weight:800;
    -webkit-line-clamp:2;
}

.v17-mini-provider{
    margin-top:4px;
    color:#5f6470;
    font-size:13px;
    line-height:1.25;
}

.v17-mini-meta{
    grid-row:4;
    margin-top:0;
    padding-top:5px;
    gap:9px;
    color:#5f6470;
    font-size:12px;
    line-height:1.1;
    overflow:visible;
}

.v17-mini-meta-item{
    flex:0 1 auto;
    min-width:0;
}

.v17-mini-meta-item i{
    font-size:13px;
}

.v17-mini-price{
    font-size:13.5px;
}

/* Make sure long providers don't push metadata around. */
.v17-mini-provider{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

/* Bootstrap 5 LG >=992 */
@media(min-width:992px){
    .v17-module-grid{
        gap:18px;
    }

    .v17-module-heading{
        min-height:52px;
    }

    .v17-module-heading h2{
        max-width:300px;
        font-size:19px;
    }

    .v17-mini-listing-card{
        height:116px;
        min-height:116px;
        grid-template-columns:116px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:116px;
        height:116px;
        min-height:116px;
    }

    .v17-mini-body{
        height:116px;
        padding:10px 11px 9px;
    }

    .v17-mini-title{
        min-height:35px;
        max-height:35px;
        font-size:14px;
        line-height:1.18;
    }

    .v17-mini-provider{
        font-size:12px;
    }

    .v17-mini-meta{
        gap:7px;
        font-size:11px;
    }

    .v17-mini-price{
        font-size:12.5px;
    }
}

/* Bootstrap 5 XL >=1200 */
@media(min-width:1200px){
    .v17-module-heading h2{
        max-width:320px;
        font-size:20px;
    }

    .v17-mini-listing-card{
        height:116px;
        min-height:116px;
        grid-template-columns:116px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:116px;
        height:116px;
        min-height:116px;
    }

    .v17-mini-body{
        height:116px;
        padding:10px 12px 9px;
    }

    .v17-mini-title{
        font-size:15px;
    }

    .v17-mini-provider{
        font-size:12.5px;
    }

    .v17-mini-meta{
        gap:8px;
        font-size:11.5px;
    }

    .v17-mini-price{
        font-size:13px;
    }
}

/* Bootstrap 5 XXL >=1400 */
@media(min-width:1400px){
    .v17-module-grid{
        gap:20px;
    }

    .v17-mini-listing-card{
        height:118px;
        min-height:118px;
        grid-template-columns:118px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:118px;
        height:118px;
        min-height:118px;
    }

    .v17-mini-body{
        height:118px;
        padding:10px 12px 9px;
    }

    .v17-mini-title{
        min-height:36px;
        max-height:36px;
        font-size:15.5px;
    }

    .v17-mini-provider{
        font-size:13px;
    }

    .v17-mini-meta{
        gap:9px;
        font-size:12px;
    }

    .v17-mini-price{
        font-size:13.5px;
    }
}

/* On phones, retain the same clean proportions but allow a little more room. */
@media(max-width:767.98px){
    .v17-module-heading{
        min-height:auto;
    }

    .v17-mini-listing-card{
        height:112px;
        min-height:112px;
        grid-template-columns:112px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:112px;
        height:112px;
        min-height:112px;
    }

    .v17-mini-body{
        height:112px;
        padding:9px 10px 8px;
    }

    .v17-mini-title{
        min-height:33px;
        max-height:33px;
        font-size:14px;
    }

    .v17-mini-provider{
        font-size:12px;
    }

    .v17-mini-meta{
        font-size:11px;
    }
}


/* ==========================================================
   V17.16 - PRICE LABEL FIT
   Longer legacy price labels such as "Up to $99.00" and
   "Starts from $60.00" stay on one line without crowding.
   ========================================================== */

.v17-mini-price{
    white-space:nowrap;
    font-size:12px;
}

@media(min-width:1200px){
    .v17-mini-price{
        font-size:12px;
    }
}

@media(min-width:1400px){
    .v17-mini-price{
        font-size:12.5px;
    }
}


/* ==========================================================
   V17.17 - MODULE VISUAL HIERARCHY
   Make the 3-column area read as three organized collections,
   not as nine competing cards.
   ========================================================== */

/* One quiet visual section around all three modules. */
.v17-home-listing-modules{
    padding:24px 0 38px;
    background:
        radial-gradient(circle at 8% 6%, rgba(245,236,255,.58) 0 90px, transparent 91px),
        radial-gradient(circle at 92% 90%, rgba(231,244,255,.52) 0 120px, transparent 121px),
        #fbfafe;
}

/* Pastel section headers separate the heading from the cards. */
.v17-module-heading{
    min-height:58px;
    margin-bottom:12px;
    padding:9px 11px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    border:1px solid rgba(105,86,150,.08);
    border-radius:13px;
    box-shadow:none;
}

.v17-module-online .v17-module-heading{
    background:#f1e9ff;
}

.v17-module-events .v17-module-heading{
    background:#e9f4ff;
}

.v17-module-camps .v17-module-heading{
    background:#eaf7ee;
}

.v17-module-heading-title{
    min-width:0;
    display:flex;
    align-items:center;
    gap:9px;
}

.v17-module-heading-icon{
    flex:0 0 34px;
    width:34px;
    height:34px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:10px;
    background:rgba(255,255,255,.72);
    color:#6f58b4;
    font-size:18px;
}

.v17-module-events .v17-module-heading-icon{
    color:#3978ad;
}

.v17-module-camps .v17-module-heading-icon{
    color:#38865d;
}

.v17-module-heading-icon svg{
    width:21px;
    height:21px;
    display:block;
}

.v17-module-heading h2{
    margin:0;
    max-width:none;
    color:#252231;
    font-size:20px;
    line-height:1.12;
    font-weight:800;
    letter-spacing:-.02em;
}

.v17-module-heading>a{
    margin-top:0;
    padding:6px 2px;
    font-size:12px;
    font-weight:800;
    color:#6e54b7;
}

/* Make the cards quieter than the headers. */
.v17-mini-listing-card{
    border-color:#e8e7ee;
    box-shadow:0 2px 7px rgba(35,31,57,.035);
}

.v17-mini-listing-card:hover{
    transform:translateY(-1px);
    border-color:#dddce5;
    box-shadow:0 5px 12px rgba(35,31,57,.07);
}

/* Slightly calmer typography while retaining readability. */
.v17-mini-title{
    color:#262530;
}

.v17-mini-provider{
    color:#656873;
}

/* Cleaner text-style metadata: Online · Teen, Princeton · Teen, etc. */
.v17-mini-meta{
    gap:0;
    color:#626672;
    font-size:11.5px;
    overflow:hidden;
}

.v17-mini-meta-item{
    flex:0 1 auto;
    min-width:0;
    max-width:52%;
}

.v17-mini-meta-item + .v17-mini-meta-item::before{
    content:"·";
    margin:0 7px;
    color:#a5a7b0;
    font-weight:700;
}

.v17-mini-meta-item:not(.v17-meta-location) i{
    display:none;
}

.v17-meta-location{
    display:inline-flex;
    align-items:center;
    gap:3px;
}

.v17-meta-location i{
    display:inline-block;
    color:#777c8a;
    font-size:12px;
}

.v17-mini-price{
    margin-left:auto;
    padding-left:8px;
    color:var(--pink);
    font-weight:800;
}

/* Bootstrap 5 LG >=992 */
@media(min-width:992px){
    .v17-home-listing-modules{
        padding-top:26px;
        padding-bottom:40px;
    }

    .v17-module-heading{
        min-height:64px;
        padding:9px 10px;
    }

    .v17-module-heading h2{
        font-size:18.5px;
    }

    .v17-module-heading-icon{
        flex-basis:32px;
        width:32px;
        height:32px;
        font-size:17px;
    }

    .v17-module-heading>a{
        font-size:11.5px;
    }

    .v17-mini-meta{
        font-size:10.8px;
    }

    .v17-mini-meta-item + .v17-mini-meta-item::before{
        margin:0 5px;
    }
}

/* Bootstrap 5 XL >=1200 */
@media(min-width:1200px){
    .v17-module-heading{
        min-height:62px;
        padding:10px 11px;
    }

    .v17-module-heading h2{
        font-size:19.5px;
    }

    .v17-module-heading-icon{
        flex-basis:34px;
        width:34px;
        height:34px;
    }

    .v17-module-heading>a{
        font-size:12px;
    }

    .v17-mini-meta{
        font-size:11.25px;
    }
}

/* Bootstrap 5 XXL >=1400 */
@media(min-width:1400px){
    .v17-module-heading{
        min-height:62px;
        padding:10px 12px;
    }

    .v17-module-heading h2{
        font-size:20.5px;
    }

    .v17-module-heading>a{
        font-size:12.5px;
    }

    .v17-mini-meta{
        font-size:11.5px;
    }
}

/* Stack cleanly on phones; headers stay distinct. */
@media(max-width:767.98px){
    .v17-home-listing-modules{
        padding-top:20px;
    }

    .v17-module-heading{
        min-height:56px;
        padding:9px 10px;
    }

    .v17-module-heading h2{
        font-size:18px;
    }

    .v17-module-heading-icon{
        flex-basis:32px;
        width:32px;
        height:32px;
    }
}


/* ==========================================================
   V17.18 - THREE HORIZONTAL MODULE ROWS
   One full-width module per row, with 3 wider cards per row.
   Keeps all V17.16 data logic and V17.17 visual hierarchy.
   ========================================================== */

/* The three category modules now stack vertically. */
.v17-module-grid{
    grid-template-columns:1fr !important;
    gap:26px;
}

/* Each category header spans the full content width. */
.v17-listing-module{
    width:100%;
    max-width:none;
    margin:0;
}

.v17-module-heading{
    min-height:58px;
    margin-bottom:12px;
    padding:10px 14px;
}

.v17-module-heading-title{
    gap:10px;
}

.v17-module-heading h2{
    max-width:none;
    font-size:21px;
    line-height:1.12;
}

.v17-module-heading>a{
    font-size:12.5px;
}

/* Three cards across inside each full-width category row. */
.v17-module-cards{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px;
}

/* Wider card = larger image and more readable text. */
.v17-mini-listing-card{
    height:124px;
    min-height:124px;
    grid-template-columns:124px minmax(0,1fr);
}

.v17-mini-image,
.v17-mini-image img,
.v17-mini-image-fallback{
    width:124px;
    height:124px;
    min-height:124px;
}

.v17-mini-body{
    height:124px;
    padding:11px 13px 10px;
}

.v17-mini-title{
    min-height:38px;
    max-height:38px;
    font-size:16px;
    line-height:1.18;
}

.v17-mini-provider{
    margin-top:4px;
    font-size:13px;
    line-height:1.25;
}

.v17-mini-meta{
    font-size:12px;
    line-height:1.1;
}

.v17-mini-meta-item{
    max-width:60%;
}

.v17-mini-price{
    font-size:13px;
}

/* The section itself can breathe a little more in row mode. */
.v17-home-listing-modules{
    padding-top:28px;
    padding-bottom:42px;
}


/* Bootstrap 5 MD >=768: 2 cards on first line, third below. */
@media(min-width:768px) and (max-width:991.98px){
    .v17-module-grid{
        gap:24px;
    }

    .v17-module-cards{
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:11px;
    }

    .v17-mini-listing-card{
        height:120px;
        min-height:120px;
        grid-template-columns:120px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:120px;
        height:120px;
        min-height:120px;
    }

    .v17-mini-body{
        height:120px;
        padding:10px 12px 9px;
    }

    .v17-mini-title{
        min-height:36px;
        max-height:36px;
        font-size:15px;
    }

    .v17-mini-provider{
        font-size:12.5px;
    }

    .v17-mini-meta{
        font-size:11.5px;
    }
}


/* Bootstrap 5 LG >=992 */
@media(min-width:992px){
    .v17-module-grid{
        grid-template-columns:1fr !important;
        gap:26px;
    }

    .v17-module-heading{
        min-height:58px;
        padding:10px 14px;
    }

    .v17-module-heading h2{
        max-width:none;
        font-size:20.5px;
    }

    .v17-module-heading-icon{
        flex-basis:34px;
        width:34px;
        height:34px;
    }

    .v17-module-heading>a{
        font-size:12.5px;
    }

    .v17-module-cards{
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:12px;
    }

    .v17-mini-listing-card{
        height:122px;
        min-height:122px;
        grid-template-columns:122px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:122px;
        height:122px;
        min-height:122px;
    }

    .v17-mini-body{
        height:122px;
        padding:10px 12px 9px;
    }

    .v17-mini-title{
        min-height:37px;
        max-height:37px;
        font-size:15.5px;
    }

    .v17-mini-provider{
        font-size:12.5px;
    }

    .v17-mini-meta{
        font-size:11.5px;
    }

    .v17-mini-price{
        font-size:12.5px;
    }
}


/* Bootstrap 5 XL >=1200 */
@media(min-width:1200px){
    .v17-module-grid{
        gap:28px;
    }

    .v17-module-heading{
        min-height:60px;
        padding:10px 15px;
    }

    .v17-module-heading h2{
        font-size:21px;
    }

    .v17-module-cards{
        gap:14px;
    }

    .v17-mini-listing-card{
        height:126px;
        min-height:126px;
        grid-template-columns:126px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:126px;
        height:126px;
        min-height:126px;
    }

    .v17-mini-body{
        height:126px;
        padding:11px 13px 10px;
    }

    .v17-mini-title{
        min-height:39px;
        max-height:39px;
        font-size:16px;
    }

    .v17-mini-provider{
        font-size:13px;
    }

    .v17-mini-meta{
        font-size:12px;
    }

    .v17-mini-price{
        font-size:13px;
    }
}


/* Bootstrap 5 XXL >=1400 */
@media(min-width:1400px){
    .v17-module-grid{
        gap:30px;
    }

    .v17-module-heading{
        min-height:62px;
        padding:11px 16px;
    }

    .v17-module-heading h2{
        font-size:21.5px;
    }

    .v17-module-heading>a{
        font-size:13px;
    }

    .v17-module-cards{
        gap:15px;
    }

    .v17-mini-listing-card{
        height:130px;
        min-height:130px;
        grid-template-columns:130px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:130px;
        height:130px;
        min-height:130px;
    }

    .v17-mini-body{
        height:130px;
        padding:12px 14px 10px;
    }

    .v17-mini-title{
        min-height:40px;
        max-height:40px;
        font-size:16.5px;
    }

    .v17-mini-provider{
        font-size:13.25px;
    }

    .v17-mini-meta{
        font-size:12.25px;
    }

    .v17-mini-price{
        font-size:13.25px;
    }
}


/* Phones: one card per row. */
@media(max-width:767.98px){
    .v17-module-grid{
        gap:22px;
    }

    .v17-module-cards{
        grid-template-columns:1fr;
        gap:9px;
    }

    .v17-module-heading{
        min-height:56px;
        margin-bottom:10px;
    }

    .v17-mini-listing-card{
        height:114px;
        min-height:114px;
        grid-template-columns:114px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image img,
    .v17-mini-image-fallback{
        width:114px;
        height:114px;
        min-height:114px;
    }

    .v17-mini-body{
        height:114px;
        padding:9px 10px 8px;
    }

    .v17-mini-title{
        min-height:34px;
        max-height:34px;
        font-size:14px;
    }

    .v17-mini-provider{
        font-size:12px;
    }

    .v17-mini-meta{
        font-size:11px;
    }

    .v17-mini-price{
        font-size:11.5px;
    }
}


/* ==========================================================
   V17.19 - CLEAN ROW SEPARATION
   Removes decorative background circles and gives each
   horizontal module clearer breathing room.
   ========================================================== */

.v17-home-listing-modules{
    background:#fbfafe;
    padding-top:30px;
    padding-bottom:44px;
}

.v17-module-grid{
    gap:0 !important;
}

.v17-listing-module{
    padding-bottom:28px;
    margin-bottom:28px;
    border-bottom:1px solid #ebe9f1;
}

.v17-listing-module:last-child{
    padding-bottom:0;
    margin-bottom:0;
    border-bottom:0;
}

.v17-module-heading{
    margin-bottom:14px;
}

.v17-module-cards{
    gap:14px;
}

.v17-mini-listing-card{
    box-shadow:0 1px 5px rgba(35,31,57,.03);
}

.v17-mini-listing-card:hover{
    box-shadow:0 4px 10px rgba(35,31,57,.06);
}

@media(min-width:768px) and (max-width:991.98px){
    .v17-listing-module{
        padding-bottom:24px;
        margin-bottom:24px;
    }

    .v17-module-heading{
        margin-bottom:12px;
    }
}

@media(max-width:767.98px){
    .v17-home-listing-modules{
        padding-top:22px;
        padding-bottom:34px;
    }

    .v17-listing-module{
        padding-bottom:22px;
        margin-bottom:22px;
    }

    .v17-module-heading{
        margin-bottom:10px;
    }
}


/* ==========================================================
   V17.20 - HEADING + SECTION CLEANUP
   Brand-color headings, lighter hero H1, no module dividers,
   pure white module background.
   ========================================================== */

/* Three listing modules: pure white background, spacing only.
   No divider lines between Online / Events / Camps. */
.v17-home-listing-modules{
    background:#fff;
}

.v17-listing-module{
    border-bottom:0;
}

/* Use the same dark blue-purple as Online Classes Spotlight. */
.v17-module-heading h2{
    color:#40208d;
}

/* Hero headline: same brand color, less oversized, lighter weight.
   "Perfect Kids" remains pink through .v17-title-line em. */
.v17-hero-copy h1{
    color:#40208d;
    font-size:32px;
    font-weight:600;
    line-height:1.04;
    letter-spacing:-.025em;
}

/* Bootstrap 5 SM >=576 */
@media(min-width:576px){
    .v17-hero-copy h1{
        font-size:38px;
    }
}

/* Bootstrap 5 MD >=768 */
@media(min-width:768px){
    .v17-hero-copy h1{
        font-size:44px;
        line-height:1.02;
    }
}

/* Bootstrap 5 LG >=992 */
@media(min-width:992px){
    .v17-hero-copy h1{
        font-size:46px;
        line-height:1.01;
    }
}

/* Bootstrap 5 XL >=1200 */
@media(min-width:1200px){
    .v17-hero-copy h1{
        font-size:50px;
    }
}

/* Bootstrap 5 XXL >=1400 */
@media(min-width:1400px){
    .v17-hero-copy h1{
        font-size:54px;
        line-height:1;
    }
}


/* ==========================================================
   V17.21 - ROTATING HERO CATEGORY
   One stable H1 element; only the highlighted category word
   changes visually. Static supporting text carries the full
   range of site topics.
   ========================================================== */

.v17-title-rotating-line{
    display:flex;
    align-items:baseline;
    gap:.18em;
    white-space:nowrap;
}

.v17-rotating-word{
    display:inline-block;
    color:var(--pink);
    font-style:normal;
    transition:opacity .18s ease, transform .18s ease;
}

.v17-rotating-word.is-changing{
    opacity:0;
    transform:translateY(4px);
}

/* Reserve room on larger screens so "Near You" does not jump
   as short/long rotating phrases change. */
@media(min-width:768px){
    .v17-rotating-word{
        min-width:7.5em;
    }
}

/* On smaller phones let the phrase size naturally rather than
   forcing an overly wide reserved area. */
@media(max-width:767.98px){
    .v17-title-rotating-line{
        gap:.16em;
    }

    .v17-rotating-word{
        min-width:0;
    }
}

/* Respect users who prefer reduced motion. */
@media(prefers-reduced-motion:reduce){
    .v17-rotating-word{
        transition:none;
    }
}


/* ==========================================================
   V17.22 - ROTATING HERO HOTFIX
   ========================================================== */

/* Keep "Near You" immediately after the rotating phrase.
   V17.21 reserved 7.5em for the rotating word, which caused
   the large empty gap visible in the screenshot. */
.v17-title-rotating-line{
    display:flex;
    align-items:baseline;
    justify-content:flex-start;
    gap:.18em;
    white-space:nowrap;
}

.v17-rotating-word{
    min-width:0 !important;
}

/* Slightly tighten the second hero line on desktop so longer
   phrases such as "Online Classes Near You" fit better. */
@media(min-width:992px){
    .v17-title-rotating-line{
        font-size:.94em;
    }
}

@media(max-width:575.98px){
    .v17-title-rotating-line{
        white-space:normal;
        flex-wrap:wrap;
        row-gap:0;
    }
}


/* ==========================================================
   V17.24 - COLOR CATEGORY / MODULE ICONS
   Uses custom Kidzamania-style generated artwork while keeping
   all existing category-card and module-header background colors.
   ========================================================== */

.v17-category-icon-img{
    display:block;
    width:40px;
    height:40px;
    object-fit:contain;
}

.v17-module-heading-icon-img{
    display:block;
    width:29px;
    height:29px;
    object-fit:contain;
}

/* The in-person artwork contains multiple people, so let it use
   the full available icon box. */
.v17-category-classes .v17-category-icon-img{
    width:42px;
    height:42px;
}

@media(max-width:575.98px){
    .v17-category-icon-img{
        width:36px;
        height:36px;
    }

    .v17-category-classes .v17-category-icon-img{
        width:38px;
        height:38px;
    }

    .v17-module-heading-icon-img{
        width:27px;
        height:27px;
    }
}


/* ==========================================================
   V17.25 - ICON VISUAL BALANCE + SLOWER HERO ROTATION
   The PNG canvases are the same size, but simple shapes such
   as the music note look visually larger than detailed icons.
   These overrides balance their apparent size.
   ========================================================== */

/* Category-row icon visual sizing */
.v17-category-online .v17-category-icon-img{
    width:38px;
    height:38px;
}

.v17-category-classes .v17-category-icon-img{
    width:34px;
    height:34px;
}

.v17-category-activities .v17-category-icon-img{
    width:38px;
    height:38px;
}

.v17-category-camps .v17-category-icon-img{
    width:43px;
    height:43px;
}

.v17-category-arts .v17-category-icon-img{
    width:38px;
    height:38px;
}

.v17-category-music .v17-category-icon-img{
    width:34px;
    height:34px;
}

/* Matching module-title icons */
.v17-module-online .v17-module-heading-icon-img{
    width:28px;
    height:28px;
}

.v17-module-events .v17-module-heading-icon-img{
    width:28px;
    height:28px;
}

.v17-module-camps .v17-module-heading-icon-img{
    width:32px;
    height:32px;
}

/* Bootstrap 5 XS/SM */
@media(max-width:575.98px){
    .v17-category-online .v17-category-icon-img,
    .v17-category-activities .v17-category-icon-img,
    .v17-category-arts .v17-category-icon-img{
        width:34px;
        height:34px;
    }

    .v17-category-classes .v17-category-icon-img,
    .v17-category-music .v17-category-icon-img{
        width:31px;
        height:31px;
    }

    .v17-category-camps .v17-category-icon-img{
        width:38px;
        height:38px;
    }

    .v17-module-online .v17-module-heading-icon-img,
    .v17-module-events .v17-module-heading-icon-img{
        width:26px;
        height:26px;
    }

    .v17-module-camps .v17-module-heading-icon-img{
        width:29px;
        height:29px;
    }
}


/* ==========================================================
   V17.26 - FEATURED PROVIDERS + PROMO BAND + POPULAR REGIONS
   ========================================================== */

.v17-section-heading-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    margin-bottom:14px;
}

.v17-section-heading-row h2{
    margin:0;
    color:#40208d;
    font-family:"Raleway",sans-serif;
    font-size:25px;
    line-height:1.15;
    font-weight:700;
    letter-spacing:-.02em;
}

.v17-section-link{
    display:inline-flex;
    align-items:center;
    gap:6px;
    color:#6b4bd5;
    font-size:13px;
    line-height:1;
    font-weight:700;
    text-decoration:none;
    white-space:nowrap;
}

.v17-section-link:hover{
    color:var(--pink);
}

.v17-section-link-disabled{
    opacity:.72;
    cursor:default;
}

/* ---------- FEATURED PROVIDERS ---------- */

.v17-featured-providers{
    padding:28px 0 30px;
    background:#fff;
}

.v17-provider-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:12px;
}

.v17-provider-card{
    min-width:0;
    min-height:112px;
    padding:12px;
    display:flex;
    align-items:center;
    gap:12px;
    border:1px solid #e9e7ef;
    border-radius:16px;
    background:#fff;
    box-shadow:0 3px 10px rgba(38,31,69,.045);
}

.v17-provider-logo{
    flex:0 0 78px;
    width:78px;
    height:78px;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
    border-radius:14px;
    background:#faf9fc;
    border:1px solid #f0eef4;
}

.v17-provider-logo img{
    width:100%;
    height:100%;
    padding:8px;
    object-fit:contain;
}

.v17-provider-logo>span{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    height:100%;
    color:#7650cf;
    font-family:"Raleway",sans-serif;
    font-size:32px;
    font-weight:700;
    background:linear-gradient(145deg,#f1eaff,#e8f4ff);
}

.v17-provider-info{
    min-width:0;
}

.v17-provider-kicker{
    display:inline-flex;
    align-items:center;
    gap:4px;
    margin-bottom:4px;
    color:#7b60bd;
    font-size:10.5px;
    line-height:1;
    font-weight:700;
}

.v17-provider-info h3{
    margin:0;
    color:#242038;
    font-family:"Raleway",sans-serif;
    font-size:15px;
    line-height:1.22;
    font-weight:700;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
}

.v17-provider-info p{
    margin:7px 0 0;
    color:#6b6f7b;
    font-size:11.5px;
    line-height:1.25;
}

.v17-provider-info p strong{
    color:#4e5260;
}

/* ---------- FULL-WIDTH EXPLORE / ONLINE BAND ---------- */

.v17-explore-band{
    width:100%;
    margin-top:8px;
    padding:30px 0;
    background:
        linear-gradient(90deg,
            #fff0f7 0%,
            #f8efff 47%,
            #eef5ff 100%);
    border-top:1px solid #f0e9f4;
    border-bottom:1px solid #ececf5;
}

.v17-explore-band-inner{
    display:grid;
    grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);
    align-items:stretch;
    gap:28px;
}

.v17-explore-divider{
    width:1px;
    background:rgba(80,61,135,.14);
}

.v17-explore-promo{
    min-width:0;
    display:flex;
    align-items:center;
    gap:20px;
    padding:2px 10px;
}

.v17-explore-icon{
    flex:0 0 90px;
    width:90px;
    height:90px;
    display:flex;
    align-items:center;
    justify-content:center;
}

.v17-explore-icon img{
    width:82px;
    height:82px;
    object-fit:contain;
}

.v17-explore-copy h2{
    margin:0;
    color:#40208d;
    font-family:"Raleway",sans-serif;
    font-size:23px;
    line-height:1.15;
    font-weight:700;
    letter-spacing:-.02em;
}

.v17-explore-copy p{
    max-width:480px;
    margin:8px 0 10px;
    color:#5f6270;
    font-size:13px;
    line-height:1.55;
}

.v17-explore-copy a{
    display:inline-flex;
    align-items:center;
    gap:6px;
    color:var(--pink);
    font-size:12.5px;
    line-height:1;
    font-weight:700;
    text-decoration:none;
}

/* ---------- POPULAR REGIONS ---------- */

.v17-popular-regions{
    padding:32px 0 42px;
    background:#fff;
}

.v17-region-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:14px;
}

.v17-region-card{
    position:relative;
    min-width:0;
    height:190px;
    overflow:hidden;
    border:1px solid #e7e6ee;
    border-radius:17px;
    background:#eaf4ff;
    box-shadow:0 4px 12px rgba(31,39,76,.05);
    text-decoration:none;
    transition:transform .16s ease, box-shadow .16s ease;
}

.v17-region-card:hover{
    transform:translateY(-2px);
    box-shadow:0 8px 18px rgba(31,39,76,.09);
}

.v17-region-illustration{
    position:absolute;
    inset:0;
    display:block;
    overflow:hidden;
}

.v17-region-card-1 .v17-region-illustration{
    background:linear-gradient(#cae9ff 0 56%,#cfeecf 56% 100%);
}

.v17-region-card-2 .v17-region-illustration{
    background:linear-gradient(#d4ecff 0 52%,#f9e4ad 52% 72%,#a9def0 72% 100%);
}

.v17-region-card-3 .v17-region-illustration{
    background:linear-gradient(#f5d9f4 0 52%,#cbe4f5 52% 70%,#d7edcf 70% 100%);
}

.v17-region-card-4 .v17-region-illustration{
    background:linear-gradient(#ddecff 0 53%,#f0cf9f 53% 68%,#c7e0bb 68% 100%);
}

.v17-region-sun{
    position:absolute;
    top:20px;
    right:28px;
    width:34px;
    height:34px;
    border-radius:50%;
    background:#ffd85b;
    box-shadow:0 0 0 8px rgba(255,216,91,.15);
}

.v17-region-hill{
    position:absolute;
    bottom:-35px;
    border-radius:50% 50% 0 0;
    transform:rotate(-4deg);
}

.v17-region-hill-back{
    left:-10%;
    width:75%;
    height:105px;
    background:#83c98f;
}

.v17-region-hill-front{
    right:-12%;
    width:78%;
    height:92px;
    background:#5fb179;
    transform:rotate(5deg);
}

.v17-region-card-2 .v17-region-hill-back,
.v17-region-card-2 .v17-region-hill-front{
    opacity:.48;
}

.v17-region-card-3 .v17-region-hill-back{
    background:#94c59a;
}

.v17-region-card-3 .v17-region-hill-front{
    background:#6aae7b;
}

.v17-region-card-4 .v17-region-hill-back{
    background:#e6a65f;
}

.v17-region-card-4 .v17-region-hill-front{
    background:#d78350;
}

.v17-region-landmark{
    position:absolute;
    left:50%;
    bottom:48px;
    transform:translateX(-50%);
    color:#376a8f;
    font-size:58px;
    line-height:1;
    opacity:.94;
    text-shadow:0 2px 0 rgba(255,255,255,.28);
}

.v17-region-card-2 .v17-region-landmark{
    color:#397ba2;
}

.v17-region-card-3 .v17-region-landmark{
    color:#526d92;
}

.v17-region-card-4 .v17-region-landmark{
    color:#875f4a;
}

.v17-region-label{
    position:absolute;
    left:12px;
    right:12px;
    bottom:11px;
    min-width:0;
    padding:9px 11px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    border-radius:12px;
    background:rgba(255,255,255,.92);
    box-shadow:0 3px 10px rgba(40,36,65,.10);
    backdrop-filter:blur(4px);
}

.v17-region-label>span{
    min-width:0;
    display:flex;
    align-items:center;
    gap:5px;
    color:#30264d;
    font-family:"Raleway",sans-serif;
    font-size:14px;
    line-height:1.15;
    font-weight:700;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}

.v17-region-label>span i{
    color:var(--pink);
}

.v17-region-label small{
    flex:0 0 auto;
    color:#747786;
    font-size:10.5px;
    white-space:nowrap;
}

/* ---------- RESPONSIVE ---------- */

@media(max-width:1199.98px){
    .v17-provider-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }

    .v17-region-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

@media(max-width:767.98px){
    .v17-section-heading-row{
        margin-bottom:12px;
    }

    .v17-section-heading-row h2{
        font-size:21px;
    }

    .v17-featured-providers{
        padding-top:22px;
        padding-bottom:24px;
    }

    .v17-provider-grid{
        grid-template-columns:1fr;
        gap:9px;
    }

    .v17-provider-card{
        min-height:100px;
    }

    .v17-provider-logo{
        flex-basis:68px;
        width:68px;
        height:68px;
    }

    .v17-explore-band{
        padding:24px 0;
    }

    .v17-explore-band-inner{
        grid-template-columns:1fr;
        gap:22px;
    }

    .v17-explore-divider{
        width:100%;
        height:1px;
    }

    .v17-explore-promo{
        padding:0;
        gap:14px;
    }

    .v17-explore-icon{
        flex-basis:68px;
        width:68px;
        height:68px;
    }

    .v17-explore-icon img{
        width:64px;
        height:64px;
    }

    .v17-explore-copy h2{
        font-size:19px;
    }

    .v17-explore-copy p{
        font-size:12.5px;
    }

    .v17-popular-regions{
        padding-top:26px;
        padding-bottom:34px;
    }

    .v17-region-grid{
        grid-template-columns:1fr;
        gap:10px;
    }

    .v17-region-card{
        height:170px;
    }
}


/* ==========================================================
   V17.27 - REFINED LOWER HOMEPAGE
   ========================================================== */

/* Featured Providers */
.v17-provider-card{
    min-height:126px;
    padding:13px;
    align-items:center;
    gap:13px;
}
.v17-provider-logo-stage{
    flex:0 0 86px;
    width:86px;
    height:86px;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
    border:1px solid #eceaf1;
    border-radius:14px;
    background:#fff;
}
.v17-provider-logo-stage img{
    display:block;
    width:100%;
    height:100%;
    padding:10px;
    object-fit:contain;
}
.v17-provider-monogram{
    width:100%;
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:12px;
    background:linear-gradient(145deg,#f0e9ff,#e8f5ff);
    color:#5e46b5;
    font-family:"Raleway",sans-serif;
    font-size:34px;
    font-weight:700;
}
.v17-provider-title-row{
    display:flex;
    align-items:flex-start;
    gap:6px;
}
.v17-provider-title-row h3{
    flex:1 1 auto;
}
.v17-provider-verified{
    flex:0 0 auto;
    color:#6f55c4;
    font-size:13px;
    line-height:1;
}
.v17-provider-count{
    margin:5px 0 0 !important;
    font-size:11px !important;
}
.v17-provider-tags{
    margin-top:8px;
    display:flex;
    flex-wrap:wrap;
    gap:5px;
}
.v17-provider-tag{
    max-width:110px;
    padding:4px 8px;
    overflow:hidden;
    border-radius:999px;
    background:#eee8ff;
    color:#503b91;
    font-size:10px;
    line-height:1.1;
    font-weight:700;
    white-space:nowrap;
    text-overflow:ellipsis;
}
.v17-provider-tag:nth-child(2){
    background:#dff4f3;
    color:#23756f;
}
.v17-provider-tag:nth-child(3){
    background:#e5edff;
    color:#415f9a;
}
.v17-provider-logo{
    display:none;
}

/* Full-width rich promo band */
.v17-explore-band{
    position:relative;
    overflow:hidden;
    margin-top:10px;
    padding:26px 0;
    background:linear-gradient(105deg,#fff0f6 0%,#f8efff 46%,#eef3ff 100%);
}
.v17-explore-band::before{
    content:"";
    position:absolute;
    inset:0;
    pointer-events:none;
    background:
        radial-gradient(circle at 3% 28%,rgba(255,113,172,.18) 0 15px,transparent 16px),
        radial-gradient(circle at 7% 75%,rgba(115,187,255,.17) 0 10px,transparent 11px),
        radial-gradient(circle at 96% 18%,rgba(151,111,235,.15) 0 34px,transparent 35px),
        radial-gradient(circle at 91% 80%,rgba(255,213,92,.17) 0 24px,transparent 25px);
}
.v17-explore-decor{
    position:absolute;
    border-radius:50%;
    pointer-events:none;
}
.v17-explore-decor-left{
    left:-36px;
    bottom:-42px;
    width:115px;
    height:115px;
    background:rgba(255,255,255,.28);
}
.v17-explore-decor-right{
    right:-28px;
    top:-34px;
    width:100px;
    height:100px;
    background:rgba(255,255,255,.24);
}
.v17-explore-band-inner{
    position:relative;
    z-index:1;
    grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);
    gap:28px;
}
.v17-explore-promo{
    min-height:150px;
    padding:0 10px;
    gap:16px;
}
.v17-explore-art{
    flex:0 0 150px;
    width:150px;
    height:150px;
    display:flex;
    align-items:center;
    justify-content:center;
}
.v17-explore-svg{
    width:145px;
    height:145px;
    overflow:visible;
}
.v17-explore-copy h2{
    font-size:22px;
}
.v17-explore-copy h2 span{
    color:var(--pink);
}
.v17-explore-copy p{
    max-width:500px;
    margin:7px 0 9px;
    font-size:12.5px;
    line-height:1.48;
}
.v17-explore-copy a{
    font-size:12px;
}
.v17-svg-white{fill:white}
.v17-svg-pink{fill:rgb(244,47,126)}
.v17-svg-pink-soft{fill:rgb(255,216,233)}
.v17-svg-purple{fill:rgb(116,67,216)}
.v17-svg-purple-dark{fill:rgb(72,39,147)}
.v17-svg-purple-soft{fill:rgb(231,220,255)}
.v17-svg-blue{fill:rgb(60,153,237)}
.v17-svg-blue-soft{fill:rgb(215,239,255)}
.v17-svg-yellow{fill:rgb(255,204,70)}
.v17-svg-navy{fill:rgb(48,42,105)}
.v17-svg-pink-line{fill:none;stroke:rgb(244,47,126);stroke-width:4;stroke-linecap:round}
.v17-svg-yellow-line{fill:none;stroke:rgb(255,190,45);stroke-width:4;stroke-linecap:round}
.v17-svg-blue-line{fill:none;stroke:rgb(60,153,237);stroke-width:4;stroke-linecap:round}

/* Distinct region illustrations */
.v17-region-card{
    height:192px;
    background:#eef5ff;
}
.v17-region-svg{
    width:100%;
    height:100%;
    display:block;
}
.v17-sky-blue{fill:rgb(199,232,255)}
.v17-sky-light{fill:rgb(215,238,255)}
.v17-sky-soft{fill:rgb(220,236,255)}
.v17-sunset-sky{fill:rgb(250,214,228)}
.v17-sun-yellow{fill:rgb(255,213,82)}
.v17-sun-pink{fill:rgb(255,151,138)}
.v17-water-blue{fill:rgb(126,200,229)}
.v17-ocean-blue{fill:rgb(91,186,222)}
.v17-water-deep{fill:rgb(72,155,196)}
.v17-river{fill:rgb(102,174,201)}
.v17-ground-green{fill:rgb(111,181,121)}
.v17-sand{fill:rgb(244,216,163)}
.v17-shore{fill:rgb(235,207,163)}
.v17-autumn-ground{fill:rgb(196,153,92)}
.v17-city-navy{fill:rgb(57,92,129)}
.v17-liberty{fill:rgb(74,153,126);stroke:rgb(74,153,126);stroke-width:4;stroke-linecap:round}
.v17-lighthouse{fill:rgb(245,245,245);stroke:rgb(211,76,76);stroke-width:5}
.v17-boardwalk{fill:rgb(171,118,70)}
.v17-boardwalk-line{fill:none;stroke:rgb(129,83,47);stroke-width:4}
.v17-li-lighthouse{fill:rgb(246,244,237);stroke:rgb(96,105,128);stroke-width:4}
.v17-sailboat{fill:rgb(255,251,238);stroke:rgb(65,92,133);stroke-width:4}
.v17-bridge{fill:none;stroke:rgb(95,82,77);stroke-width:7;stroke-linecap:round}
.v17-tree-orange{fill:rgb(221,116,46)}
.v17-tree-red{fill:rgb(190,72,55)}

@media(max-width:1199.98px){
    .v17-explore-art{
        flex-basis:118px;
        width:118px;
        height:118px;
    }
    .v17-explore-svg{
        width:116px;
        height:116px;
    }
    .v17-explore-promo{
        min-height:138px;
    }
}
@media(max-width:767.98px){
    .v17-provider-logo-stage{
        flex-basis:72px;
        width:72px;
        height:72px;
    }
    .v17-provider-card{
        min-height:108px;
    }
    .v17-explore-promo{
        min-height:auto;
        gap:12px;
    }
    .v17-explore-art{
        flex-basis:82px;
        width:82px;
        height:82px;
    }
    .v17-explore-svg{
        width:82px;
        height:82px;
    }
    .v17-explore-copy h2{
        font-size:19px;
    }
    .v17-explore-copy p{
        font-size:12px;
    }
    .v17-region-card{
        height:176px;
    }
}


/* ==========================================================
   V17.28 - PROVIDER IMAGE / PROMO ART / REGION ART FIXES
   ========================================================== */

/* Provider image normalization */
.v17-provider-logo-stage img{
    display:block;
    width:100%;
    height:100%;
}

.v17-provider-logo-stage img.is-logo{
    object-fit:contain;
    padding:10px;
    background:#fff;
}

.v17-provider-logo-stage img.is-photo{
    object-fit:cover;
    padding:0;
    background:#f4f3f8;
}

.v17-provider-tag{
    display:inline-block;
    max-width:118px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    vertical-align:top;
}

/* Promo art: large, clean PNG illustrations instead of the broken compass SVG */
.v17-explore-art{
    flex:0 0 148px;
    width:148px;
    height:148px;
}

.v17-explore-art-img{
    display:block;
    width:138px;
    height:138px;
    object-fit:contain;
}

.v17-explore-art-any{
    width:142px;
    height:142px;
}

.v17-explore-art-online{
    width:136px;
    height:136px;
}

/* Region illustration files */
.v17-region-card{
    height:192px;
    background:#eef5ff;
}

.v17-region-art-img{
    display:block;
    width:100%;
    height:100%;
    object-fit:cover;
}

@media(max-width:1199.98px){
    .v17-explore-art{
        flex-basis:118px;
        width:118px;
        height:118px;
    }

    .v17-explore-art-img,
    .v17-explore-art-any,
    .v17-explore-art-online{
        width:112px;
        height:112px;
    }
}

@media(max-width:767.98px){
    .v17-explore-art{
        flex-basis:84px;
        width:84px;
        height:84px;
    }

    .v17-explore-art-img,
    .v17-explore-art-any,
    .v17-explore-art-online{
        width:80px;
        height:80px;
    }

    .v17-provider-tag{
        max-width:104px;
    }

    .v17-region-card{
        height:176px;
    }
}


/* ==========================================================
   V17.29.2 - MOBILE PROMO BAND FIX
   Force the two promo panels to stack vertically on mobile.
   ========================================================== */

@media(max-width:767.98px){
    .v17-explore-band{
        padding:22px 0 24px;
    }

    .v17-explore-band-inner{
        display:grid;
        grid-template-columns:1fr !important;
        gap:0 !important;
    }

    .v17-explore-divider{
        width:100% !important;
        height:1px !important;
        margin:18px 0;
        background:rgba(80,61,135,.12);
    }

    .v17-explore-promo{
        width:100%;
        min-height:0;
        padding:0 !important;
        display:grid;
        grid-template-columns:96px minmax(0,1fr);
        align-items:center;
        gap:14px !important;
    }

    .v17-explore-art{
        width:96px !important;
        height:96px !important;
        min-width:0;
        flex:none !important;
    }

    .v17-explore-art-img,
    .v17-explore-art-any,
    .v17-explore-art-online{
        width:92px !important;
        height:92px !important;
        object-fit:contain;
    }

    .v17-explore-copy{
        min-width:0;
    }

    .v17-explore-copy h2{
        margin:0;
        font-size:20px;
        line-height:1.12;
    }

    .v17-explore-copy p{
        max-width:none;
        margin:7px 0 9px;
        font-size:13px;
        line-height:1.48;
    }

    .v17-explore-copy a{
        font-size:12.5px;
        line-height:1.15;
    }
}

@media(max-width:399.98px){
    .v17-explore-promo{
        grid-template-columns:74px minmax(0,1fr);
        gap:11px !important;
    }

    .v17-explore-art{
        width:74px !important;
        height:74px !important;
    }

    .v17-explore-art-img,
    .v17-explore-art-any,
    .v17-explore-art-online{
        width:70px !important;
        height:70px !important;
    }

    .v17-explore-copy h2{
        font-size:18px;
    }

    .v17-explore-copy p{
        font-size:12.5px;
    }
}


/* ==========================================================
   V17.31 - LARGER MODULE HEADER ICONS
   Make the icons in the three colored listing-module headers
   fill most of the header height without changing card icons.
   ========================================================== */

/* Desktop/tablet */
.v17-module-heading{
    min-height:64px;
    padding-top:5px;
    padding-bottom:5px;
}

.v17-module-heading-icon{
    flex:0 0 52px !important;
    width:52px !important;
    height:52px !important;
    border-radius:12px;
}

/* Online and Events artwork have similar visual density. */
.v17-module-online .v17-module-heading-icon-img,
.v17-module-events .v17-module-heading-icon-img{
    width:47px !important;
    height:47px !important;
}

/* Camp artwork is visually lighter, so allow it to fill more. */
.v17-module-camps .v17-module-heading-icon-img{
    width:51px !important;
    height:51px !important;
}

.v17-module-heading-title{
    gap:11px;
}

/* Bootstrap 5 XXL */
@media(min-width:1400px){
    .v17-module-heading{
        min-height:66px;
        padding-top:6px;
        padding-bottom:6px;
    }

    .v17-module-heading-icon{
        flex-basis:52px !important;
        width:52px !important;
        height:52px !important;
    }
}

/* XS/SM/MD */
@media(max-width:767.98px){
    .v17-module-heading{
        min-height:58px;
        padding-top:5px;
        padding-bottom:5px;
    }

    .v17-module-heading-icon{
        flex:0 0 46px !important;
        width:46px !important;
        height:46px !important;
        border-radius:11px;
    }

    .v17-module-online .v17-module-heading-icon-img,
    .v17-module-events .v17-module-heading-icon-img{
        width:42px !important;
        height:42px !important;
    }

    .v17-module-camps .v17-module-heading-icon-img{
        width:45px !important;
        height:45px !important;
    }

    .v17-module-heading-title{
        gap:9px;
    }
}


/* ==========================================================
   V17.32 - SITE FOOTER
   Dark visual endpoint for the homepage with responsive
   Bootstrap 5 breakpoints.
   ========================================================== */
.v17-footer{
    position:relative;
    margin-top:64px;
    background:
        radial-gradient(circle at 9% 8%, rgba(255,126,177,.16), transparent 24%),
        radial-gradient(circle at 88% 10%, rgba(106,197,255,.13), transparent 23%),
        linear-gradient(135deg, #2f1a68 0%, #24134f 100%);
    color:#fff;
    overflow:hidden;
}

.v17-footer-accent{
    height:5px;
    background:linear-gradient(90deg, #f6a7c8 0 22%, #b9a7ee 22% 45%, #91d7e8 45% 67%, #b9e3b0 67% 82%, #ffd1a7 82% 100%);
}

.v17-footer-grid{
    display:grid;
    grid-template-columns:minmax(300px,1.7fr) minmax(150px,.85fr) minmax(210px,1fr) minmax(210px,1fr);
    gap:46px;
    padding:52px 0 42px;
}

.v17-footer-brand{
    max-width:390px;
}

.v17-footer-logo{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:64px;
    padding:9px 15px;
    margin-bottom:20px;
    background:#fff;
    border-radius:15px;
    box-shadow:0 12px 28px rgba(15,7,38,.18);
}

.v17-footer-logo img{
    display:block;
    width: 190px;
    height:auto;
}

.v17-footer-brand p,
.v17-footer-providers p{
    margin:0;
    color:rgba(244,240,255,.76);
    font-size:14px;
    line-height:1.75;
}

.v17-footer-column h2{
    margin:4px 0 18px;
    color:#fff;
    font-family:'Raleway',sans-serif;
    font-size:16px;
    font-weight:700;
    line-height:1.25;
}

.v17-footer-column > a:not(.v17-footer-provider-link):not(.v17-footer-contact-link){
    display:block;
    width:max-content;
    max-width:100%;
    margin:0 0 11px;
    color:rgba(244,240,255,.78);
    font-size:14px;
    line-height:1.4;
    text-decoration:none;
    transition:color .18s ease, transform .18s ease;
}

.v17-footer-column > a:not(.v17-footer-provider-link):not(.v17-footer-contact-link):hover{
    color:#fff;
    transform:translateX(2px);
}

.v17-footer-providers p{
    max-width:230px;
    margin-bottom:17px;
}

.v17-footer-provider-link{
    display:inline-flex;
    align-items:center;
    gap:8px;
    min-height:40px;
    padding:0 15px;
    border:1px solid rgba(255,255,255,.22);
    border-radius:10px;
    background:rgba(255,255,255,.08);
    color:#fff;
    font-size:13.5px;
    font-weight:700;
    line-height:1;
    text-decoration:none;
    transition:background .18s ease, border-color .18s ease, transform .18s ease;
}

.v17-footer-provider-link:hover{
    background:rgba(255,255,255,.14);
    border-color:rgba(255,255,255,.34);
    color:#fff;
    transform:translateY(-1px);
}

.v17-footer-provider-link i{
    font-size:14px;
}

.v17-footer-contact-link{
    display:flex;
    align-items:center;
    gap:10px;
    width:max-content;
    max-width:100%;
    color:rgba(244,240,255,.82);
    font-size:14px;
    text-decoration:none;
}

.v17-footer-contact-link i{
    display:grid;
    place-items:center;
    width:32px;
    height:32px;
    flex:0 0 32px;
    border-radius:50%;
    background:rgba(255,255,255,.09);
    color:#f7a8ca;
}

.v17-footer-contact-link:hover{
    color:#fff;
}

.v17-footer-legal-label{
    margin-top:20px;
    color:rgba(244,240,255,.58);
    font-size:13px;
    line-height:1.4;
}

.v17-footer-bottom{
    display:flex;
    align-items:center;
    min-height:66px;
    border-top:1px solid rgba(255,255,255,.11);
}

.v17-footer-bottom p{
    margin:0;
    color:rgba(244,240,255,.58);
    font-size:12.5px;
    line-height:1.5;
}

/* lg: tighten the footer columns without changing the structure. */
@media(max-width:1199.98px){
    .v17-footer-grid{
        grid-template-columns:minmax(260px,1.45fr) minmax(140px,.8fr) minmax(190px,1fr) minmax(190px,1fr);
        gap:30px;
    }
}

/* md: brand full width, remaining columns in a 3-column row. */
@media(max-width:991.98px){
    .v17-footer{
        margin-top:54px;
    }

    .v17-footer-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:34px 28px;
        padding:44px 0 36px;
    }

    .v17-footer-brand{
        grid-column:1 / -1;
        max-width:560px;
    }
}

/* sm: brand full width, utility columns in two columns. */
@media(max-width:767.98px){
    .v17-footer{
        margin-top:46px;
    }

    .v17-footer-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:30px 22px;
        padding:38px 0 30px;
    }

    .v17-footer-brand,
    .v17-footer-contact{
        grid-column:1 / -1;
    }

    .v17-footer-brand{
        max-width:520px;
    }

    .v17-footer-contact{
        padding-top:2px;
    }

    .v17-footer-bottom{
        min-height:60px;
    }
}

/* xs: single column for comfortable tap targets. */
@media(max-width:575.98px){
    .v17-footer-grid{
        grid-template-columns:1fr;
        gap:27px;
        padding:34px 0 28px;
    }

    .v17-footer-brand,
    .v17-footer-contact{
        grid-column:auto;
    }

    .v17-footer-logo{
        min-height:58px;
        margin-bottom:16px;
    }

    .v17-footer-column h2{
        margin-bottom:14px;
    }

    .v17-footer-providers p{
        max-width:320px;
    }
}


/* ==========================================================
   V17.34 - ATTACH LISTING CARDS TO COLORED MODULE HEADERS
   Removes the vertical white gap between each colored module
   header and its three cards.
   ========================================================== */

.v17-module-heading{
    margin-bottom:0 !important;
    border-bottom-left-radius:0;
    border-bottom-right-radius:0;
    border-bottom-color:transparent;
}

/* Pull card row up to meet the header border cleanly. */
.v17-module-cards{
    margin-top:-1px;
}

/* The cards visually continue the colored header rather than
   looking like a separate band below it. */
.v17-mini-listing-card{
    border-top-left-radius:0;
    border-top-right-radius:0;
}

/* Keep mobile behavior consistent as rows collapse. */
@media(max-width:767.98px){
    .v17-module-heading{
        margin-bottom:0 !important;
    }

    .v17-module-cards{
        margin-top:-1px;
    }
}


/* ==========================================================
   V17.35 - BORDERED LISTING MODULES + SMALL HEADER GAP
   Keeps each colored header visually connected to its module,
   while restoring a little breathing room before the cards.
   ========================================================== */

/* One light rounded border around each complete module. */
.v17-listing-module{
    padding-bottom:0;
    margin-bottom:28px;
    overflow:hidden;
    border:1px solid #e8e7ee;
    border-radius:15px;
    background:#fff;
}

.v17-listing-module:last-child{
    margin-bottom:0;
}

/* Let the colored header fill the top of the bordered module.
   The outer module now supplies the rounded top corners. */
.v17-module-heading{
    margin-bottom:0 !important;
    border:0;
    border-radius:0;
}

/* Small white breathing room between header and cards, plus a
   matching inset on the other three sides of the card row. */
.v17-module-cards{
    margin:10px;
}

/* Undo V17.34's squared card tops. */
.v17-mini-listing-card{
    border-radius:14px;
}

@media(max-width:767.98px){
    .v17-listing-module{
        padding-bottom:0;
        margin-bottom:22px;
        border-radius:14px;
    }

    .v17-module-heading{
        margin-bottom:0 !important;
    }

    .v17-module-cards{
        margin:9px;
    }
}

/* ==========================================================
   V17.35.1 - LAST MODULE BOTTOM BORDER FIX
   An older, more-specific :last-child rule removed the bottom
   border from the third module. Restore the complete outline.
   ========================================================== */

.v17-listing-module:last-child{
    border-bottom:1px solid #e8e7ee;
}

/* ==========================================================
   V17.36 - MATCH MODULE ICON BACKGROUNDS + COMPACT HEADERS
   Make each module-header icon tile use the same pastel as its
   header and trim the header height slightly.
   ========================================================== */

/* Slightly shorter desktop/tablet module headers. */
.v17-module-heading{
    min-height:58px;
    padding-top:3px;
    padding-bottom:3px;
}

/* Match each icon tile to the surrounding header background. */
.v17-module-online .v17-module-heading-icon{
    background:#f1e9ff;
}

.v17-module-events .v17-module-heading-icon{
    background:#e9f4ff;
}

.v17-module-camps .v17-module-heading-icon{
    background:#eaf7ee;
}

/* Keep XXL headers compact too. */
@media(min-width:1400px){
    .v17-module-heading{
        min-height:60px;
        padding-top:4px;
        padding-bottom:4px;
    }
}

/* Slightly tighter on phones while preserving icon room. */
@media(max-width:767.98px){
    .v17-module-heading{
        min-height:54px;
        padding-top:4px;
        padding-bottom:4px;
    }
}

/* ==========================================================
   V17.39 - MOBILE HOME CARD METADATA FIT
   Keep image-left / info-right, but never clip location/age
   just to keep price on the same line.
   ========================================================== */
@media(max-width:767.98px){
    .v17-mini-listing-card{
        height:auto;
        min-height:124px;
        grid-template-columns:112px minmax(0,1fr);
        align-items:stretch;
    }

    .v17-mini-image,
    .v17-mini-image-fallback{
        width:112px;
        height:100%;
        min-height:124px;
    }

    .v17-mini-image img{
        width:112px;
        height:100%;
        min-height:124px;
        object-fit:cover;
    }

    .v17-mini-body{
        height:auto;
        min-height:124px;
        padding:9px 10px 8px;
        grid-template-rows:auto auto 1fr auto;
    }

    .v17-mini-meta{
        display:flex;
        flex-wrap:wrap;
        align-items:center;
        row-gap:4px;
        overflow:visible;
        line-height:1.2;
    }

    .v17-mini-meta-item{
        flex:0 1 auto;
        max-width:none;
        overflow:visible;
        text-overflow:clip;
        white-space:normal;
    }

    .v17-mini-price{
        flex:0 0 100%;
        width:100%;
        margin-left:0;
        padding-left:0;
        text-align:right;
        line-height:1.1;
        white-space:nowrap;
    }
}

/* ==========================================================
   V17.40 - EQUAL HOME CARD SIZES + FULL METADATA
   ----------------------------------------------------------
   Goals:
   1. Keep every card/image the same size within each breakpoint.
   2. Keep the Home mobile layout: image LEFT / info RIGHT.
   3. Do not cut structured location or age/schedule text.
   4. Give price its own bottom-right line so it does not squeeze metadata.
   ========================================================== */

/* All desktop/tablet home cards: metadata may use the available width,
   while price sits on its own line. */
.v17-mini-meta{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    column-gap:0;
    row-gap:3px;
    overflow:visible;
}

.v17-mini-meta-item{
    flex:0 1 auto;
    min-width:0;
    max-width:none;
    overflow:visible;
    text-overflow:clip;
    white-space:normal;
}

.v17-mini-price{
    flex:0 0 100%;
    width:100%;
    margin-left:0;
    padding-left:0;
    text-align:right;
    line-height:1.05;
    white-space:nowrap;
}

/* Keep the desktop cards equal-height at each existing breakpoint.
   The image is always forced to the exact card height. */
.v17-mini-listing-card{
    overflow:hidden;
}

.v17-mini-image,
.v17-mini-image-fallback{
    align-self:stretch;
    overflow:hidden;
}

.v17-mini-image img{
    display:block;
    object-fit:cover;
}

/* Phones: fixed equal card geometry.  Image stays left, information right. */
@media(max-width:767.98px){
    .v17-mini-listing-card{
        height:124px;
        min-height:124px;
        max-height:124px;
        grid-template-columns:112px minmax(0,1fr);
        align-items:stretch;
        overflow:hidden;
    }

    .v17-mini-image,
    .v17-mini-image-fallback{
        width:112px;
        height:124px;
        min-height:124px;
        max-height:124px;
    }

    .v17-mini-image img{
        width:112px;
        height:124px;
        min-height:124px;
        max-height:124px;
        object-fit:cover;
    }

    .v17-mini-body{
        height:124px;
        min-height:124px;
        max-height:124px;
        padding:9px 10px 8px;
        grid-template-rows:auto auto 1fr auto;
        overflow:hidden;
    }

    .v17-mini-title{
        min-height:34px;
        max-height:34px;
    }

    .v17-mini-provider{
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
    }

    .v17-mini-meta{
        max-width:100%;
        row-gap:2px;
        font-size:11px;
        line-height:1.05;
    }

    .v17-mini-meta-item{
        max-width:100%;
        white-space:nowrap;
    }

    .v17-mini-price{
        margin-top:1px;
        font-size:11.5px;
    }
}

/* Very narrow phones need a little more text room, so narrow the image
   slightly while keeping every card the same height. */
@media(max-width:399.98px){
    .v17-mini-listing-card{
        grid-template-columns:104px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image-fallback,
    .v17-mini-image img{
        width:104px;
    }
}

/* ==========================================================
   V17.41 - MOBILE CARD COMPACT CONTENT
   ----------------------------------------------------------
   Keep equal card/image sizes from v17.40, but remove the
   artificial flexible gap between provider and metadata.
   ========================================================== */
@media(max-width:767.98px){
    .v17-mini-body{
        display:flex;
        flex-direction:column;
        justify-content:flex-start;
        gap:4px;
        height:124px;
        min-height:124px;
        max-height:124px;
        padding:9px 10px 8px;
        overflow:hidden;
    }

    .v17-mini-title{
        min-height:0;
        max-height:34px;
        margin:0;
    }

    .v17-mini-provider{
        margin:0;
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
    }

    .v17-mini-meta{
        margin-top:1px;
        display:flex;
        flex-wrap:wrap;
        align-items:center;
        row-gap:2px;
        max-width:100%;
        overflow:visible;
    }

    .v17-mini-price{
        flex:0 0 100%;
        width:100%;
        margin:0;
        padding:0;
        text-align:right;
        line-height:1.05;
        white-space:nowrap;
    }
}

/* ==========================================================
   V17.42 - COMPACT EQUAL MOBILE CARDS
   ----------------------------------------------------------
   Equal card/image sizes remain, but the phone cards are
   shorter and content is distributed through the body so
   sparse listings do not leave a large empty white block.
   ========================================================== */
@media(max-width:767.98px){
    .v17-mini-listing-card{
        height:108px;
        min-height:108px;
        max-height:108px;
        grid-template-columns:108px minmax(0,1fr);
        align-items:stretch;
        overflow:hidden;
    }

    .v17-mini-image,
    .v17-mini-image-fallback{
        width:108px;
        height:108px;
        min-height:108px;
        max-height:108px;
    }

    .v17-mini-image img{
        display:block;
        width:108px;
        height:108px;
        min-height:108px;
        max-height:108px;
        object-fit:cover;
    }

    .v17-mini-body{
        display:flex;
        flex-direction:column;
        justify-content:space-between;
        gap:0;
        height:108px;
        min-height:108px;
        max-height:108px;
        padding:7px 9px 7px;
        overflow:hidden;
    }

    .v17-mini-title{
        min-height:0;
        max-height:32px;
        margin:0;
        font-size:14px;
        line-height:1.12;
        -webkit-line-clamp:2;
    }

    .v17-mini-provider{
        margin:0;
        font-size:12px;
        line-height:1.15;
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
    }

    .v17-mini-meta{
        margin:0;
        padding:0;
        display:flex;
        flex-wrap:wrap;
        align-items:center;
        row-gap:1px;
        max-width:100%;
        font-size:10.5px;
        line-height:1.05;
        overflow:visible;
    }

    .v17-mini-meta-item{
        max-width:100%;
        white-space:nowrap;
    }

    .v17-mini-price{
        flex:0 0 100%;
        width:100%;
        margin:1px 0 0;
        padding:0;
        text-align:right;
        font-size:11px;
        line-height:1;
        white-space:nowrap;
    }
}

@media(max-width:399.98px){
    .v17-mini-listing-card{
        grid-template-columns:100px minmax(0,1fr);
    }

    .v17-mini-image,
    .v17-mini-image-fallback,
    .v17-mini-image img{
        width:100px;
    }
}


/* Production v17.44: featured provider cards are links to the provider-filtered activity archive. */
.v17-provider-card-link { color: inherit; text-decoration: none; }
.v17-provider-card-link:hover { color: inherit; text-decoration: none; }

/* ==========================================================
   FINAL HEADER - ADD LISTING CTA
   Restores the agreed provider CTA on desktop and mobile.
   ========================================================== */
.v17-add-listing{
    height:38px;
    padding:0 16px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:20px;
    background:var(--pink);
    color:#fff;
    font-size:14px;
    font-weight:700;
    white-space:nowrap;
}

.v17-add-listing:hover{
    color:#fff;
    filter:brightness(.96);
}

@media(max-width:991.98px){
    .v17-add-listing{display:none;}
}

@media(min-width:992px) and (max-width:1199.98px){
    .v17-add-listing{
        height:36px;
        padding:0 11px;
        font-size:12.5px;
    }
}



/* ---------------------------------------------------------
   Home AdSense placement
   --------------------------------------------------------- */
.v17-home-ad-section{
    padding:18px 0 24px;
    background:#fff;
}

.v17-home-ad-wrap{
    width:100%;
    max-width:970px;
    margin:0 auto;
    text-align:center;
}

.v17-home-ad-label{
    margin:0 0 7px;
    color:#9a9da6;
    font-size:10px;
    line-height:1;
    letter-spacing:.07em;
    text-transform:uppercase;
}

.v17-home-ad-wrap .adsbygoogle{
    display:block;
    width:100%;
    margin:0 auto;
}

.v17-home-ad-placeholder{
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:90px;
    padding:14px 20px;
    border:1px dashed #dfe2e8;
    border-radius:10px;
    background:#fafbfc;
    color:#8b9099;
    font-size:13px;
}

@media (max-width: 767px){
    .v17-home-ad-section{
        padding:14px 0 20px;
    }

    .v17-home-ad-placeholder{
        min-height:80px;
    }
}
