/**
 * ShrishaInfra Scroll Video Slider — Frontend Styles
 *
 * Architecture:
 * 1. CSS custom properties (design tokens), scoped per-instance via
 *    Elementor's {{WRAPPER}} selectors writing into --svs-* variables.
 * 2. Base component styles shared by every layout (track, slide,
 *    media layer, content layer, nav, cursor).
 * 3. Per-layout modifier blocks (.shrishainfr-scroll-slider--layout-X)
 *    that override positioning/sizing/animation-relevant CSS only —
 *    they never redefine component class names, so JS and base CSS
 *    stay layout-agnostic.
 * 4. Navigation style variants.
 * 5. Mouse-effect variants.
 * 6. Responsive breakpoints (desktop / tablet / mobile).
 *
 * All selectors are scoped under .shrishainfr-scroll-slider, per the
 * KIMONO theme-compatibility requirement to never touch global styles.
 */

/* ==========================================================================
   1. DESIGN TOKENS
   ========================================================================== */

.shrishainfr-scroll-slider {
	--svs-container-width: 100%;
	--svs-slide-height: 100vh;
	--svs-radius: 0px;
	--svs-glass-blur: 16px;
	--svs-nav-size: 10px;
	--svs-nav-spacing: 12px;
	--svs-nav-color: rgba(255, 255, 255, 0.4);
	--svs-nav-active-color: #ffffff;
	--svs-slide-bg: #0a0a0c;
	--svs-media-pos-x: 50%;
	--svs-media-pos-y: 50%;
	--svs-media-zoom: 1;

	--svs-bg: #07070a;
	--svs-fg: #f5f4f2;
	--svs-fg-muted: rgba(245, 244, 242, 0.64);
	--svs-accent: #d6ff3f;
	--svs-surface: rgba(255, 255, 255, 0.06);
	--svs-surface-border: rgba(255, 255, 255, 0.12);

	position: relative;
	width: var(--svs-container-width);
	max-width: 100%;
	margin-inline: auto;
	background: var(--svs-bg);
	color: var(--svs-fg);
	overflow: hidden;
	isolation: isolate;
	font-synthesis: none;
}

.shrishainfr-scroll-slider--light {
	--svs-bg: #f5f4f0;
	--svs-fg: #14130f;
	--svs-fg-muted: rgba(20, 19, 15, 0.62);
	--svs-surface: rgba(20, 19, 15, 0.04);
	--svs-surface-border: rgba(20, 19, 15, 0.1);
}

/* --dark uses the base token values already declared above; this rule
   exists explicitly (rather than relying purely on the base selector)
   so site-level overrides can target it directly without specificity
   fights against --light. */
.shrishainfr-scroll-slider--dark {
	--svs-bg: #07070a;
	--svs-fg: #f5f4f2;
	--svs-fg-muted: rgba(245, 244, 242, 0.64);
	--svs-surface: rgba(255, 255, 255, 0.06);
	--svs-surface-border: rgba(255, 255, 255, 0.12);
}

.shrishainfr-scroll-slider * {
	box-sizing: border-box;
}

.shrishainfr-scroll-slider img,
.shrishainfr-scroll-slider video {
	max-width: 100%;
	display: block;
}

/* Animated ambient background drift, opt-in via Background section. */
.shrishainfr-scroll-slider--animated-bg::before {
	content: "";
	position: absolute;
	inset: -20%;
	z-index: 0;
	background: radial-gradient(circle at 30% 30%, var(--svs-slide-bg, var(--svs-bg)) 0%, transparent 60%);
	opacity: 0.5;
	filter: blur(60px);
	animation: shrishainfr-svs-bg-drift 18s ease-in-out infinite alternate;
	pointer-events: none;
}

@keyframes shrishainfr-svs-bg-drift {
	0% {
		transform: translate3d(0, 0, 0) scale(1);
	}
	100% {
		transform: translate3d(4%, 6%, 0) scale(1.15);
	}
}

/* ==========================================================================
   2. EMPTY STATE (editor only)
   ========================================================================== */

.shrishainfr-svs-empty-state {
	padding: 60px 24px;
	text-align: center;
	border: 2px dashed rgba(127, 127, 127, 0.3);
	border-radius: 8px;
	color: rgba(127, 127, 127, 0.9);
	font-family: sans-serif;
}

/* ==========================================================================
   3. TRACK + SLIDE BASE STRUCTURE
   ========================================================================== */

.shrishainfr-svs-track {
	position: relative;
	width: 100%;
}

.shrishainfr-svs-slide {
	position: relative;
	display: flex;
	align-items: center;
	min-height: var(--svs-slide-height);
	width: 100%;
	background:
		linear-gradient(0deg, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15)),
		var(--svs-slide-bg);
	overflow: hidden;
	border-radius: var(--svs-radius);
}

.shrishainfr-svs-slide-media {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
}

.shrishainfr-svs-thumbnail,
.shrishainfr-svs-video,
.shrishainfr-svs-video-embed {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	/* Alignment (Horizontal/Vertical Position controls) + Zoom control:
	   object-position moves the crop's focal point for real media
	   (img/video); transform-origin makes the zoom scale outward from
	   that same point instead of always from center, so Position and
	   Zoom feel like one coherent "frame the shot" control pair rather
	   than two independent, fighting settings. */
	object-position: var(--svs-media-pos-x) var(--svs-media-pos-y);
	transform-origin: var(--svs-media-pos-x) var(--svs-media-pos-y);
}

.shrishainfr-svs-thumbnail {
	/* Base Zoom for the poster/thumbnail image; transform-origin is set
	   in the shared rule above from the Position controls. */
	transform: scale(var(--svs-media-zoom));
}

.shrishainfr-svs-video-embed iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	pointer-events: none; /* Decorative background-style embed; nav/CTA handle interaction. */
	/* YouTube/Vimeo iframes don't honour object-position for their
	   embedded page content, so only Zoom (not Position) applies here —
	   scaled from center, matching the Video Settings description. */
	transform: scale(var(--svs-media-zoom));
	transform-origin: center center;
	/* Same GPU-compositing isolation rationale as .shrishainfr-svs-video
	   below: keeps the embed's internal rendering from being forced to
	   repaint just because an ancestor is being transformed by a
	   scroll-scrub tween (parallax drift, card-stack scale). */
	will-change: opacity, transform;
}

.shrishainfr-svs-video {
	opacity: 0;
	transition: opacity 0.6s ease;
	/* Promote to its own GPU compositing layer, isolated from any
	   parent-level scroll-scrub transform (parallax drift, card-stack
	   scale). Without this, the browser can end up re-rasterizing the
	   decoded video frame on every scroll tick alongside the parent's
	   transform, which shows up as stuttery/sluggish-looking playback
	   even though nothing is altering the video's actual playback rate. */
	/* scale() here is the Zoom control; translateZ(0) is unrelated GPU-
	   compositing isolation (see comment above) and must stay combined
	   in one transform, not overridden by it. */
	transform: translateZ(0) scale(var(--svs-media-zoom));
	will-change: opacity, transform;
	backface-visibility: hidden;
}

.shrishainfr-svs-video.shrishainfr-svs-video--ready {
	opacity: 1;
}

.shrishainfr-svs-overlay {
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
}

.shrishainfr-svs-slide-content {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: 640px;
	padding: clamp(28px, 5vw, 72px);
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.shrishainfr-scroll-slider--glass .shrishainfr-svs-slide-content {
	background: var(--svs-surface);
	border: 1px solid var(--svs-surface-border);
	border-radius: calc(var(--svs-radius) + 8px);
	backdrop-filter: blur(var(--svs-glass-blur));
	-webkit-backdrop-filter: blur(var(--svs-glass-blur));
	margin: clamp(16px, 4vw, 48px);
}

/* ==========================================================================
   4. CONTENT ELEMENTS
   ========================================================================== */

.shrishainfr-svs-badge {
	display: inline-flex;
	align-self: flex-start;
	padding: 6px 14px;
	font-family: 'Roboto', sans-serif;
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	border-radius: 999px;
	background: var(--svs-accent);
	color: #0a0a0a;
	font-weight: 600;
}

.shrishainfr-svs-icon {
	width: 44px;
	height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: var(--svs-surface);
	border: 1px solid var(--svs-surface-border);
	font-size: 20px;
}

.shrishainfr-svs-icon svg {
	width: 20px;
	height: 20px;
	fill: currentColor;
}

.shrishainfr-svs-subtitle {
	margin: 0;
	font-family: 'Roboto', sans-serif;
	font-size: 14px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--svs-fg-muted);
}

.shrishainfr-svs-title {
	margin: 0;
	font-family: 'Termina', sans-serif;
	font-size: clamp(2rem, 5vw, 4rem);
	line-height: 1.05;
	font-weight: 400;
	letter-spacing: -0.01em;
}

.shrishainfr-svs-highlight {
	display: block;
	font-family: 'Termina', sans-serif;
	font-weight: 400;
	color: var(--svs-accent);
}

.shrishainfr-svs-description {
	margin: 0;
	font-family: 'Roboto', sans-serif;
	font-size: clamp(0.95rem, 1.4vw, 1.15rem);
	line-height: 1.6;
	color: var(--svs-fg-muted);
	max-width: 46ch;
}

.shrishainfr-svs-duration {
	font-family: 'Roboto', sans-serif;
	font-size: 13px;
	color: var(--svs-fg-muted);
	letter-spacing: 0.04em;
}

.shrishainfr-svs-cta {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: 8px;
	padding: 14px 28px;
	border-radius: 999px;
	background: var(--svs-fg);
	color: var(--svs-bg);
	text-decoration: none;
	font-family: 'Roboto', sans-serif;
	font-weight: 600;
	font-size: 0.95rem;
	width: fit-content;
	transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease;
	will-change: transform;
}

.shrishainfr-svs-cta:hover,
.shrishainfr-svs-cta:focus-visible {
	transform: translateY(-2px);
	box-shadow: 0 12px 32px -8px rgba(0, 0, 0, 0.4);
}

.shrishainfr-svs-cta:focus-visible {
	outline: 2px solid var(--svs-accent);
	outline-offset: 3px;
}

.shrishainfr-svs-cta-text {
	display: inline-block;
	line-height: 1;
}

/* ==========================================================================
   5. ACCESSIBILITY / MOTION
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	.shrishainfr-scroll-slider * {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}

	.shrishainfr-scroll-slider--animated-bg::before {
		animation: none;
	}
}

.shrishainfr-scroll-slider [data-svs-nav-target]:focus-visible,
.shrishainfr-scroll-slider .shrishainfr-svs-arrow:focus-visible {
	outline: 2px solid var(--svs-accent);
	outline-offset: 2px;
}

/* ==========================================================================
   6. LAYOUT PRESETS
   Each block changes positioning, sizing, and structural emphasis only.
   Component class names (.shrishainfr-svs-slide-content, etc.) are never
   redefined structurally — only repositioned/resized — so frontend.js
   keeps one shared logic path across every layout.
   ========================================================================== */

/* --- Layout 1: Premium Hero ---------------------------------------------
   Full-bleed video, content anchored bottom-left, generous padding,
   cinematic gradient floor so text always stays legible. */
.shrishainfr-scroll-slider--layout-premium-hero .shrishainfr-svs-slide {
	align-items: flex-end;
}
.shrishainfr-scroll-slider--layout-premium-hero .shrishainfr-svs-slide-content {
	width: 100%;
	max-width: 760px;
}
.shrishainfr-scroll-slider--layout-premium-hero .shrishainfr-svs-slide::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(0deg, rgba(0, 0, 0, 0.75) 0%, transparent 55%);
	pointer-events: none;
}


   6b. WHEEL / SWIPE FULL-TAKEOVER MODE
   ========================================================================== */

/* While locked, the wrapper itself is given position:fixed/top/left/
   width inline by JS (engageWheelSwipeLock) since those values depend
   on the widget's exact runtime position — this class only carries
   the parts that are always the same regardless of where the widget
   sits on the page. */
.shrishainfr-scroll-slider--wheel-locked {
	height: 100vh;
}

/* Only one slide is meaningful at a time in locked mode — the active
   one — so the track no longer needs to be a tall scrollable column;
   each slide simply fills the locked viewport and crossfades/animates
   in via the existing reveal-animation system, while inactive slides
   are hidden outright rather than sitting stacked beneath. */
.shrishainfr-scroll-slider--wheel-locked .shrishainfr-svs-track {
	height: 100%;
}
.shrishainfr-scroll-slider--wheel-locked .shrishainfr-svs-slide {
	position: absolute;
	inset: 0;
	min-height: 100%;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.5s ease;
	pointer-events: none;
}
.shrishainfr-scroll-slider--wheel-locked .shrishainfr-svs-slide--active {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	position: relative;
}

/* The spacer JS inserts to reserve the widget's normal-flow height
   while it's pinned via position:fixed. Hidden by default; toggled to
   display:block only while locked (see engageWheelSwipeLock /
   releaseWheelSwipeLock in frontend.js). */
[data-svs-wheel-spacer] {
	display: none;
	width: 100%;
}

/* ==========================================================================
   7. NAVIGATION
   ========================================================================== */

.shrishainfr-svs-nav {
	position: fixed;
	z-index: 5;
	display: flex;
	align-items: center;
	gap: var(--svs-nav-spacing);
	pointer-events: auto;
}

.shrishainfr-svs-nav--pos-bottom-center { left: 50%; bottom: 32px; transform: translateX(-50%); }
.shrishainfr-svs-nav--pos-top-center { left: 50%; top: 32px; transform: translateX(-50%); }
.shrishainfr-svs-nav--pos-bottom-left { left: 32px; bottom: 32px; }
.shrishainfr-svs-nav--pos-top-left { left: 32px; top: 32px; }
.shrishainfr-svs-nav--pos-bottom-right { right: 32px; bottom: 32px; }
.shrishainfr-svs-nav--pos-top-right { right: 32px; top: 32px; }
.shrishainfr-svs-nav--pos-side-left { left: 32px; top: 50%; transform: translateY(-50%); flex-direction: column; }
.shrishainfr-svs-nav--pos-side-right { right: 32px; top: 50%; transform: translateY(-50%); flex-direction: column; }

.shrishainfr-svs-nav-list {
	display: flex;
	align-items: center;
	gap: var(--svs-nav-spacing);
	margin: 0;
	padding: 0;
	list-style: none;
}
.shrishainfr-svs-nav--pos-side-left .shrishainfr-svs-nav-list,
.shrishainfr-svs-nav--pos-side-right .shrishainfr-svs-nav-list {
	flex-direction: column;
}

/* Dots */
.shrishainfr-svs-nav-dot {
	width: var(--svs-nav-size);
	height: var(--svs-nav-size);
	border-radius: 50%;
	border: none;
	background: var(--svs-nav-color);
	cursor: pointer;
	padding: 0;
	transition: background 0.3s ease, transform 0.3s ease;
}
.shrishainfr-svs-nav-dot--active,
.shrishainfr-svs-nav-dot:hover {
	background: var(--svs-nav-active-color);
	transform: scale(1.25);
}

/* Numbers */
.shrishainfr-svs-nav-number {
	border: none;
	background: transparent;
	color: var(--svs-nav-color);
	font-size: calc(var(--svs-nav-size) * 1.4);
	font-weight: 600;
	cursor: pointer;
	padding: 4px;
	transition: color 0.3s ease;
}
.shrishainfr-svs-nav-number--active,
.shrishainfr-svs-nav-number:hover {
	color: var(--svs-nav-active-color);
}

/* Progress bar */
.shrishainfr-svs-progress-track {
	width: min(40vw, 360px);
	height: 3px;
	background: var(--svs-nav-color);
	border-radius: 999px;
	overflow: hidden;
}
.shrishainfr-svs-progress-fill {
	height: 100%;
	width: 0%;
	background: var(--svs-nav-active-color);
	border-radius: 999px;
	transition: width 0.2s linear;
}
.shrishainfr-svs-nav--pos-side-left .shrishainfr-svs-progress-track,
.shrishainfr-svs-nav--pos-side-right .shrishainfr-svs-progress-track {
	width: 3px;
	height: min(30vh, 240px);
}
.shrishainfr-svs-nav--pos-side-left .shrishainfr-svs-progress-fill,
.shrishainfr-svs-nav--pos-side-right .shrishainfr-svs-progress-fill {
	width: 100%;
	height: 0%;
}

/* Vertical timeline / side navigation */
.shrishainfr-svs-nav-item {
	display: flex;
	align-items: center;
	gap: 10px;
	border: none;
	background: transparent;
	cursor: pointer;
	padding: 6px 0;
	color: var(--svs-nav-color);
	transition: color 0.3s ease;
}
.shrishainfr-svs-nav-item-line {
	width: var(--svs-nav-size);
	height: 2px;
	background: currentColor;
	flex-shrink: 0;
	transition: width 0.3s ease;
}
.shrishainfr-svs-nav-item-label {
	font-size: 13px;
	white-space: nowrap;
	max-width: 0;
	overflow: hidden;
	opacity: 0;
	transition: max-width 0.3s ease, opacity 0.3s ease;
}
.shrishainfr-svs-nav-item--active,
.shrishainfr-svs-nav-item:hover {
	color: var(--svs-nav-active-color);
}
.shrishainfr-svs-nav-item--active .shrishainfr-svs-nav-item-line,
.shrishainfr-svs-nav-item:hover .shrishainfr-svs-nav-item-line {
	width: calc(var(--svs-nav-size) * 2.4);
}
.shrishainfr-svs-nav-item--active .shrishainfr-svs-nav-item-label,
.shrishainfr-svs-nav-item:hover .shrishainfr-svs-nav-item-label {
	max-width: 200px;
	opacity: 1;
}

/* Thumbnail navigation */
.shrishainfr-svs-nav-thumb {
	width: calc(var(--svs-nav-size) * 5);
	height: calc(var(--svs-nav-size) * 3.2);
	border-radius: 6px;
	border: 2px solid transparent;
	overflow: hidden;
	padding: 0;
	cursor: pointer;
	opacity: 0.5;
	transition: opacity 0.3s ease, border-color 0.3s ease;
}
.shrishainfr-svs-nav-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.shrishainfr-svs-nav-thumb--active,
.shrishainfr-svs-nav-thumb:hover {
	opacity: 1;
	border-color: var(--svs-nav-active-color);
}

/* Arrows */
.shrishainfr-svs-arrow {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	border: 1px solid var(--svs-surface-border);
	background: var(--svs-surface);
	color: var(--svs-fg);
	font-size: 18px;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background 0.3s ease, transform 0.2s ease;
}
.shrishainfr-svs-arrow:hover {
	background: var(--svs-nav-active-color);
	color: var(--svs-bg);
	transform: scale(1.05);
}
.shrishainfr-svs-nav--arrows {
	position: fixed;
	left: 32px;
	right: 32px;
	top: 50%;
	transform: translateY(-50%);
	justify-content: space-between;
	width: auto;
}

/* Slide counter */
.shrishainfr-svs-counter {
	position: fixed;
	z-index: 5;
	right: 32px;
	bottom: 32px;
	font-size: 13px;
	color: var(--svs-fg-muted);
	letter-spacing: 0.05em;
	display: flex;
	gap: 4px;
}

/* ==========================================================================
   8. MOUSE INTERACTION EFFECTS
   ========================================================================== */

.shrishainfr-svs-cursor {
	position: fixed;
	z-index: 9999;
	top: 0;
	left: 0;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background: var(--svs-fg);
	color: var(--svs-bg);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	pointer-events: none;
	opacity: 0;
	transform: translate3d(-50%, -50%, 0) scale(0.6);
	transition: opacity 0.25s ease, transform 0.25s ease;
	mix-blend-mode: difference;
}
.shrishainfr-svs-cursor--visible {
	opacity: 1;
	transform: translate3d(-50%, -50%, 0) scale(1);
}

.shrishainfr-svs-cursor-text {
	display: block;
	text-align: center;
	line-height: 1.2;
}

.shrishainfr-scroll-slider--effect-glow .shrishainfr-svs-cta {
	box-shadow: 0 0 0 rgba(214, 255, 63, 0);
	transition: box-shadow 0.4s ease, transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}
.shrishainfr-scroll-slider--effect-glow .shrishainfr-svs-cta:hover {
	box-shadow: 0 0 36px 4px rgba(214, 255, 63, 0.45);
}

.shrishainfr-scroll-slider--effect-tilt .shrishainfr-svs-slide-media {
	transform-style: preserve-3d;
	will-change: transform;
}

.shrishainfr-scroll-slider--effect-float .shrishainfr-svs-slide-content {
	animation: shrishainfr-svs-float 6s ease-in-out infinite;
}
@keyframes shrishainfr-svs-float {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-10px); }
}

.shrishainfr-scroll-slider--effect-zoom .shrishainfr-svs-thumbnail,
.shrishainfr-scroll-slider--effect-zoom .shrishainfr-svs-video {
	transition: transform 8s ease-out;
}
/* Compose with the static Zoom control (--svs-media-zoom) rather than
   overriding it outright, so a widget using both the Zoom control and
   this hover/active "Image Zoom" effect gets the effect layered on top
   of the configured base zoom instead of one silently cancelling the
   other. */
.shrishainfr-svs-slide--active.shrishainfr-scroll-slider--effect-zoom .shrishainfr-svs-thumbnail {
	transform: scale(calc(var(--svs-media-zoom) * 1.08));
}
.shrishainfr-svs-slide--active .shrishainfr-scroll-slider--effect-zoom .shrishainfr-svs-video {
	transform: translateZ(0) scale(calc(var(--svs-media-zoom) * 1.08));
}

.shrishainfr-svs-slide-content,
.shrishainfr-svs-cta,
.shrishainfr-svs-nav-dot,
.shrishainfr-svs-nav-item {
	transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ==========================================================================
   9. RESPONSIVE
   ========================================================================== */

@media (max-width: 768px) {
	.shrishainfr-svs-slide-content {
		width: 100% !important;
		max-width: none !important;
		padding: 24px;
	}
	.shrishainfr-svs-nav--pos-side-left,
	.shrishainfr-svs-nav--pos-side-right {
		left: 50%;
		right: auto;
		bottom: 24px;
		top: auto;
		transform: translateX(-50%);
		flex-direction: row;
	}
	.shrishainfr-svs-nav--pos-side-left .shrishainfr-svs-nav-list,
	.shrishainfr-svs-nav--pos-side-right .shrishainfr-svs-nav-list {
		flex-direction: row;
	}
	.shrishainfr-svs-title {
		font-size: clamp(1.6rem, 8vw, 2.4rem);
	}
	.shrishainfr-svs-cursor {
		display: none; /* Cursor-follow effects are not meaningful on touch devices. */
	}
}

@media (hover: none) and (pointer: coarse) {
	.shrishainfr-svs-cursor {
		display: none;
	}
}
