/**
 * flickity-carousel-base.css
 * Core structural logic for all NetHub carousels
 */
 
/* --- Variables & Utilities --- */
.nethub-carousel-wrapper {
    --brand-teal: #00828e;
    --text-dark: #0e2b3c;
    --text-muted: #475467;
    --brand-border-color: #EAECF0;
    --btn-black: #0e2b3c;
    width: 100%;
	position: relative;
}

/* --- Visibility & Core Initialization --- */
.nethub-carousel-wrapper .main-carousel {
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease-in-out;
    position: relative;
    width: 100%;
	padding: 40px 2px;
}

.nethub-carousel-wrapper .main-carousel.flickity-enabled {
    opacity: 1;
    visibility: visible;
}

.nethub-carousel-wrapper .main-carousel:after {
    content: '';
    display: block;
    clear: both;
}

/* --- Viewport & Slider Structure --- */
.nethub-carousel-wrapper .flickity-viewport {
    transition: height 0.3s ease;
    touch-action: pan-y;
}

.nethub-carousel-wrapper .flickity-slider {
    display: flex;
    align-items: stretch;
}

/* Base Cell Logic */
.nethub-carousel-wrapper .carousel-cell {
	width: calc(100% / 2.5 - 15px);
    margin-right: 30px;
	transition: opacity 0.4s ease-in-out;
	flex-shrink: 0;
	height: auto;
}

/* Force Equal Height for cards */
.nethub-carousel-wrapper.flickity-equal-cells .flickity-slider > .carousel-cell {
    min-height: 100%;
    display: flex;
}

/* --- Navigation Controls (Shared UI) --- */
.nethub-carousel-wrapper .carousel-utility-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.nethub-carousel-wrapper .carousel-controls {
    display: flex;
    flex-direction: row;
    gap: 15px;
	padding-left: 30px;
    margin-left: auto;
}

.nethub-carousel-wrapper .ctrl-btn {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    border: 1px solid var(--brand-border-color);
    background: #fff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    font-size: 18px;
    color: var(--text-dark);
}

.nethub-carousel-wrapper .ctrl-btn:hover {
    background: var(--brand-teal);
    color: #fff;
    border-color: var(--brand-teal);
}

/* --- Tabs Container --- */
.nethub-carousel-wrapper .tab-container {
    display: flex;
    gap: 15px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch; 
    flex-wrap: nowrap;
}

.nethub-carousel-wrapper .tab-container::-webkit-scrollbar {
    display: none;
}

.nethub-carousel-wrapper .tab-container {
    -ms-overflow-style: none;
    scrollbar-width: none;
}

.nethub-carousel-wrapper .tab-btn { 
	padding: 9px 22px; 
	border-radius: 100px; 
	font-weight: 700; 
	font-size: 11px; 
	letter-spacing: 1px; 
	text-transform: uppercase; 
	cursor: pointer; 
	border: 1px solid var(--brand-border-color); 
	background: transparent; 
	color: var(--text-muted); 
	white-space: nowrap; 
	flex-shrink: 0; 
	transition: all 0.3s ease;
}

.nethub-carousel-wrapper .tab-btn:hover, .tab-btn.active { 
	background: var(--brand-teal); 
	border-color: var(--brand-teal); 
	color: #fff; 
}

/* Mobile Nav Container */
.nethub-carousel-wrapper .mobile-nav-container {
    display: none;
    justify-content: center;
    gap: 20px;
}

/* --- Layout Modes --- */
.nethub-carousel-wrapper.layout-full-width .flickity-viewport {
    overflow: visible !important;
}

.nethub-carousel-wrapper.layout-contained {
    overflow: hidden;
}

.nethub-carousel-wrapper.layout-contained .flickity-viewport {
	overflow: visible !important;
}

/* --- Responsive Widths (Shared) --- */
@media (max-width: 1024px) {
    .nethub-carousel-wrapper .carousel-cell { width: calc(60% - 15px); } 
}

@media (max-width: 767px) {
    .nethub-carousel-wrapper .carousel-cell { width: 100%; }
    .nethub-carousel-wrapper .desktop-only { display: none !important; }
    .nethub-carousel-wrapper .mobile-nav-container { display: flex; }
		
	.nethub-carousel-wrapper .carousel-utility-bar {
		display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 20px;
        width: 100vw;
        max-width: 100vw;
        margin-left: calc(-50vw + 50%);
        margin-right: calc(-50vw + 50%);
        overflow: visible;
        clip-path: inset(0 -100% 0 -100%);
    }
	
	.nethub-carousel-wrapper .tab-container {
		display: flex;
        flex-wrap: nowrap;
        gap: 15px;
        width: 100%;
        overflow-x: auto;
        overflow-y: hidden;
        padding-left: 20px;
        padding-right: 20px;
        scroll-padding-left: 20px;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
	
	.nethub-carousel-wrapper .tab-container::-webkit-scrollbar {
        display: none;
    }
	
	.nethub-carousel-wrapper .tab-btn {
        flex: 0 0 auto;
        white-space: nowrap;
        scroll-snap-align: start;
    }
    
}