{"version":3,"file":"VoiceFunctionsCarousel.CaWVdwee.mjs","names":["React.useState","React.useRef","React.useId","React.useMemo","useMemo","React.useCallback","React.Fragment","React.useLayoutEffect","React.useEffect"],"sources":["https:/framerusercontent.com/modules/FhZjrt9JdQUD2LQzsiBC/sL1mLQDnD3g2ZspZLNAe/VoiceFunctionsCarousel.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useMemo}from\"react\";const fallbackImages=[{src:\"https://images.unsplash.com/photo-1644088379091-d574269d422f?crop=entropy&cs=srgb&fm=jpg&ixlib=rb-4.1.0&q=85&w=1200\",srcSet:\"\",alt:\"We understand your operation\"},{src:\"https://images.unsplash.com/photo-1462556791646-c201b8241a94?crop=entropy&cs=srgb&fm=jpg&ixlib=rb-4.1.0&q=85&w=1200\",srcSet:\"\",alt:\"We prioritize what drives impact\"},{src:\"https://images.unsplash.com/photo-1727434032773-af3cd98375ba?crop=entropy&cs=srgb&fm=jpg&ixlib=rb-4.1.0&q=85&w=1200\",srcSet:\"\",alt:\"We configure and train your agents\"},{src:\"https://images.unsplash.com/photo-1733723586975-9aaae6983459?crop=entropy&cs=srgb&fm=jpg&ixlib=rb-4.1.0&q=85&w=1200\",srcSet:\"\",alt:\"We deploy and optimize in production\"}];const EASE=\"cubic-bezier(0.22, 1, 0.36, 1)\";function stripLeadToken(line){return line.replace(/^\\s*(?:[-–—•●▪︎*]+|(?:\\d+|[\\u2460-\\u2473])[\\)\\].:-]?)\\s*/g,\"\").trim();}function clampText(value,max=120){if(value.length<=max)return value;return`${value.slice(0,Math.max(0,max-1)).trim()}…`;}// ---------------------------------------------------------------------------\n// Conversation playback\n//\n// Modelled on the transcript in the ElevenLabs Agents page: each message pops\n// in with a scale spring while the column below it slides up, and the text\n// inside reveals one word at a time. Content is authored per step in the\n// property controls — a step without a conversation renders none at all.\n// ---------------------------------------------------------------------------\nconst CONVO_START_MS=450// lets the card finish expanding first\n;const MSG_IN_MS=420;const MSG_EASE=\"cubic-bezier(0.34, 1.3, 0.64, 1)\"// slight overshoot, reads as a spring\n;const WORD_FADE_MS=200;const WORD_EASE=\"cubic-bezier(0, 0, 0.2, 1)\";const WORD_LEAD_MS=90// words start just after the bubble begins to pop\n;const PAUSE_SAME_SPEAKER_MS=520;const PAUSE_TURN_CHANGE_MS=800;// Crossfade between a card's two background clips. Each clip is ~4s and the\n// swap is driven by its own `ended` event, so the cut lands on the clip's\n// natural end instead of an arbitrary timer.\nconst VIDEO_FADE_MS=600;// Mismo tile de ruido (256x256, aleatorio por píxel) que usa el componente\n// \"Grain\" de las páginas de blog, para que la textura sea idéntica en todo el\n// sitio. El patrón anterior era un damero de radial-gradients que se repetía\n// cada 3-5 px y se leía como artefacto de compresión, no como grano.\nconst GRAIN_SCALE=.17;const GRAIN_TEXTURE=\"https://framerusercontent.com/images/rR6HYXBrMmX4cRpXfXUOvpvpB0.png\";const AGENT_MARKER=\"①\"// ①\n;const CUSTOMER_MARKER=\"②\"// ②\n;// The conversation is authored as one string, one message per line, because\n// Framer property controls cannot nest an Array inside an Array. The circled\n// markers are the same convention the `description` field already uses, and\n// they survive the Portuguese auto-translation pass unchanged — a plain\n// \"Silia:\" / \"Cliente:\" prefix would not be safe to rely on.\n//\n//   ① Tengo martes 10am o miércoles 4pm.\n//   ② Martes 10am.\nfunction parseConversation(raw,customerLabel){if(!raw)return[];return raw.split(/\\n+/g).map(line=>line.trim()).filter(Boolean).map(line=>{const isCustomer=line.charAt(0)===CUSTOMER_MARKER;const text=stripLeadToken(line);return{speaker:isCustomer?\"customer\":\"agent\",label:isCustomer?customerLabel:\"Silia\",words:text.length>0?text.split(/\\s+/g):[]};}).filter(message=>message.words.length>0);}// Word pace tracks word length so the reveal reads like speech, not a metronome.\nfunction wordStepMs(word){return Math.min(130,Math.max(60,Math.round(word.length*34)));}function buildTimeline(messages){const messageStarts=[];const wordStarts=[];let cursor=CONVO_START_MS;messages.forEach((message,index)=>{messageStarts.push(cursor);let wordCursor=cursor+WORD_LEAD_MS;const starts=[];message.words.forEach(word=>{starts.push(wordCursor);wordCursor+=wordStepMs(word);});wordStarts.push(starts);const spoken=wordCursor+WORD_FADE_MS;const next=messages[index+1];const pause=next&&next.speaker!==message.speaker?PAUSE_TURN_CHANGE_MS:PAUSE_SAME_SPEAKER_MS;cursor=spoken+pause;});const last=messages.length-1;let total=0;if(last>=0){const lastWords=wordStarts[last];const tail=lastWords.length>0?lastWords[lastWords.length-1]:messageStarts[last];total=tail+WORD_FADE_MS;}return{messageStarts,wordStarts,total};}function fullReveal(messages){return messages.map(message=>message.words.length);}function revealAt(timeline,elapsed){const out=[];for(let i=0;i<timeline.messageStarts.length;i++){if(elapsed<timeline.messageStarts[i])break;const starts=timeline.wordStarts[i];let shown=0;while(shown<starts.length&&elapsed>=starts[shown])shown++;out.push(shown);}return out;}function sameReveal(a,b){if(a.length!==b.length)return false;for(let i=0;i<a.length;i++)if(a[i]!==b[i])return false;return true;}// Published pages are server-rendered, where useLayoutEffect warns. The FLIP\n// measurement only matters in the browser anyway.\nconst useIsomorphicLayoutEffect=typeof window!==\"undefined\"?React.useLayoutEffect:React.useEffect;// Project brand font. The @font-face is already loaded by the page's canvas text,\n// so naming the family here is enough — no font loading needed.\n// Book everywhere — the whole carousel stays on the lighter weight, titles included.\nconst FONT_BODY='\"ES Klarheit Grotesk Book\", \"Inter\", sans-serif';const FONT_TITLE=FONT_BODY;/**\n * Conversation Slice Carousel\n *\n * @framerIntrinsicWidth 1056\n * @framerIntrinsicHeight 560\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function VoiceFunctionsCarousel(props){const{steps=[],cardWidth=1056,cardHeight=320,orientation=\"auto\",breakpoint=809,collapsedSize=56,collapsedSizeMobile=44,radius=20,gap=12,duration=560,trigger=\"click\",collapsedDim=.15,scrimStrength=.72,titleSize=28,descriptionSize=16,titleColor=\"#FFFFFF\",descriptionColor=\"#FFFFFF\",arrowColor=\"#000000\",arrowBackground=\"#FFFFFF\",showArrow=true,sliceLabels=true,cardCTA=\"\",modalKey=\"\",grainStrength=.07,pixelate=true,pixelBlockSize=19,accentColor=\"#CAF91A\",accentDensity=1.8,autoplay=false,intervalMs=4e3,style}=props;const compatNoop=showArrow||pixelate||autoplay||intervalMs>0||pixelBlockSize>0||accentDensity>=0||Boolean(accentColor);const isStatic=useIsStaticRenderer();const[activeIndex,setActiveIndex]=React.useState(0);const[measuredWidth,setMeasuredWidth]=React.useState(0);const rootRef=React.useRef(null);const swipeStartX=React.useRef(null);const swipePointerId=React.useRef(null);const rawId=React.useId();const uid=React.useMemo(()=>rawId.replace(/[^a-zA-Z0-9_-]/g,\"\"),[rawId]);const cls=`fsc-${uid}`;const normalizedSteps=useMemo(()=>{const base=steps.length?steps:[{title:\"Step Title\",description:\"Add your step description in controls.\"}];return base.map((step,index)=>({title:step.title||`Step ${index+1}`,description:step.description||\"\",summaryLine:clampText((step.description||\"\").split(/\\n+/g).map(line=>stripLeadToken(line)).filter(Boolean)[0]||stripLeadToken(step.description||\"\"),140),// Authored per step. No conversation means no bubbles at all —\n    // this component is shared with the homepage process section,\n    // which must never render a chat.\n    conversation:parseConversation(step.conversation||\"\",step.customerLabel?.trim()||\"Cliente\"),videoA:step.videoA||\"\",videoB:step.videoB||\"\",poster:step.poster?step.poster.trim():\"\",link:step.link?step.link.trim():\"\",image:step.image?.src?step.image:fallbackImages[index%fallbackImages.length]}));},[steps]);const total=normalizedSteps.length;const safeIndex=total>0?activeIndex%total:0;const mobileCutoff=React.useMemo(()=>Math.min(Math.max(360,breakpoint),640),[breakpoint]);const isMobileSlider=React.useMemo(()=>{if(orientation!==\"auto\")return false;return measuredWidth>0&&measuredWidth<=mobileCutoff;},[orientation,measuredWidth,mobileCutoff]);// ---- Conversation playback -------------------------------------------\n// The active step's conversation plays once, then stays complete. Coming\n// back to a step that already played shows it whole, with no replay.\nconst prefersReducedMotion=React.useMemo(()=>{if(isStatic)return true;if(typeof window===\"undefined\"||!window.matchMedia)return false;return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;},[isStatic]);const rawActiveConversation=React.useMemo(()=>{const all=normalizedSteps[safeIndex]?.conversation||[];// The narrow mobile slider only has room for the opening exchange.\nreturn isMobileSlider?all.slice(0,3):all;},[normalizedSteps,safeIndex,isMobileSlider]);// Framer hands array controls back as a fresh array on every render, so the\n// playback effect keys off the text itself. Without this the timeline would\n// restart on any unrelated re-render.\nconst conversationKey=React.useMemo(()=>rawActiveConversation.map(message=>message.speaker+\"|\"+message.words.join(\" \")).join(\"//\"),[rawActiveConversation]);const activeConversation=React.useMemo(()=>rawActiveConversation,// eslint-disable-next-line react-hooks/exhaustive-deps\n[conversationKey]);const allConversationsKey=React.useMemo(()=>normalizedSteps.map(step=>step.conversation.map(message=>message.words.join(\" \")).join(\"|\")).join(\"//\"),[normalizedSteps]);const[reveal,setReveal]=React.useState([]);const playedRef=React.useRef(new Set);const stackRef=React.useRef(null);const stackHeightRef=React.useRef(null);const[hasEnteredView,setHasEnteredView]=React.useState(isStatic);// New copy pasted in the editor invalidates what has already played.\nReact.useEffect(()=>{playedRef.current=new Set;},[allConversationsKey]);// Hold playback until the carousel is actually on screen.\nReact.useEffect(()=>{if(isStatic||hasEnteredView)return;const node=rootRef.current;if(!node)return;if(typeof window===\"undefined\"||!(\"IntersectionObserver\"in window)){setHasEnteredView(true);return;}const observer=new IntersectionObserver(entries=>{const entry=entries[0];if(!entry||!entry.isIntersecting)return;if(entry.intersectionRatio<.3)return;setHasEnteredView(true);observer.disconnect();},{threshold:[.3]});observer.observe(node);return()=>observer.disconnect();},[isStatic,hasEnteredView]);React.useEffect(()=>{if(activeConversation.length===0){setReveal([]);return;}const complete=fullReveal(activeConversation);if(isStatic||prefersReducedMotion||playedRef.current.has(safeIndex)){setReveal(complete);return;}if(!hasEnteredView){setReveal([]);return;}const timeline=buildTimeline(activeConversation);const startedAt=typeof performance!==\"undefined\"?performance.now():Date.now();let frame=0;let current=[];setReveal(current);const tick=()=>{const now=typeof performance!==\"undefined\"?performance.now():Date.now();const elapsed=now-startedAt;if(elapsed>=timeline.total){playedRef.current.add(safeIndex);setReveal(complete);return;}const next=revealAt(timeline,elapsed);if(!sameReveal(next,current)){current=next;setReveal(next);}frame=requestAnimationFrame(tick);};frame=requestAnimationFrame(tick);return()=>cancelAnimationFrame(frame);},[activeConversation,safeIndex,isStatic,prefersReducedMotion,hasEnteredView]);// FLIP the whole column instead of springing every bubble: when a message\n// mounts, the bottom-anchored stack grows and shoves the older messages up.\n// Offsetting the stack by that delta and releasing it makes the new bubble\n// rise from the bottom edge and the rest glide up with it.\nconst visibleCount=reveal.length;const stackCountRef=React.useRef(0);const flipTimer=React.useRef(null);// A slice change swaps the whole column out; nothing to glide from.\nuseIsomorphicLayoutEffect(()=>{stackHeightRef.current=null;stackCountRef.current=0;},[safeIndex]);useIsomorphicLayoutEffect(()=>{const node=stackRef.current;if(!node){stackHeightRef.current=null;stackCountRef.current=0;return;}const previousHeight=stackHeightRef.current;const previousCount=stackCountRef.current;const height=node.offsetHeight;stackHeightRef.current=height;stackCountRef.current=visibleCount;if(isStatic||prefersReducedMotion)return;// Only glide when exactly one message joined an existing column. The\n// first bubble just pops, and a jump straight to the finished state\n// (a step that already played) must not animate at all.\nif(previousCount<1||visibleCount!==previousCount+1)return;if(previousHeight==null||height<=previousHeight)return;const delta=height-previousHeight;node.style.transition=\"none\";node.style.transform=`translateY(${delta}px)`;// Force the offset to land before the transition is armed.\nvoid node.offsetHeight;node.style.transition=`transform ${MSG_IN_MS}ms ${MSG_EASE}`;node.style.transform=\"translateY(0)\";// Drop the transform once it has served its purpose. A resting\n// transform would keep this stack a backdrop root and flatten the\n// glass bubbles inside it.\nif(flipTimer.current)clearTimeout(flipTimer.current);flipTimer.current=setTimeout(()=>{node.style.transition=\"\";node.style.transform=\"\";flipTimer.current=null;},MSG_IN_MS+40);},[visibleCount,isStatic,prefersReducedMotion]);React.useEffect(()=>()=>{if(flipTimer.current)clearTimeout(flipTimer.current);},[]);// ---- Background video ------------------------------------------------\n// Only the active card mounts its clips. Under reduced motion or in the\n// static renderer nothing mounts at all and the still image shows through.\nconst rawActiveVideos=React.useMemo(()=>{if(isStatic||prefersReducedMotion)return[];const step=normalizedSteps[safeIndex];if(!step)return[];return[step.videoA,step.videoB].filter(src=>typeof src===\"string\"&&src.length>0);},[normalizedSteps,safeIndex,isStatic,prefersReducedMotion]);// Same trap as the conversation: Framer rebuilds the steps array on every\n// render, so keying the playback effect on the array identity would restart\n// the clip constantly. Key it on the URLs themselves.\nconst videoKey=React.useMemo(()=>rawActiveVideos.join(\"//\"),[rawActiveVideos]);const activeVideos=React.useMemo(()=>rawActiveVideos,// eslint-disable-next-line react-hooks/exhaustive-deps\n[videoKey]);const[videoTurn,setVideoTurn]=React.useState(0);const videoRefs=React.useRef([]);// A new card always starts on its first clip.\nReact.useEffect(()=>{setVideoTurn(0);},[safeIndex]);React.useEffect(()=>{if(activeVideos.length===0)return;const current=videoRefs.current[videoTurn%activeVideos.length];if(!current)return;current.currentTime=0;const played=current.play();// Autoplay can still be refused; the poster underneath keeps the card intact.\nif(played&&typeof played.catch===\"function\")played.catch(()=>{});// Rewind whichever clip just faded out, once it is no longer visible.\nconst timer=setTimeout(()=>{videoRefs.current.forEach((node,index)=>{if(!node||index===videoTurn%activeVideos.length)return;node.pause();node.currentTime=0;});},VIDEO_FADE_MS);return()=>clearTimeout(timer);},[activeVideos,videoTurn]);const advanceVideo=React.useCallback(()=>{setVideoTurn(turn=>turn+1);},[]);// `Silia Lead Modal` listens on window for this event and filters by key,\n// so the card CTA can open the very same lead form the page CTAs use\n// without this component knowing anything about it.\nconst openLeadModal=React.useCallback(event=>{// The card itself is a tab button; don't let the click switch slices.\nevent.stopPropagation();if(isStatic||typeof window===\"undefined\")return;window.dispatchEvent(new CustomEvent(\"silia:open-lead-modal\",{detail:{key:modalKey}}));},[isStatic,modalKey]);const focusTo=React.useCallback(index=>{React.startTransition(()=>setActiveIndex(index));},[setActiveIndex]);const goNext=React.useCallback(()=>{if(total<2)return;React.startTransition(()=>{setActiveIndex(prev=>(prev+1)%total);});},[total]);const goPrev=React.useCallback(()=>{if(total<2)return;React.startTransition(()=>{setActiveIndex(prev=>(prev-1+total)%total);});},[total]);React.useEffect(()=>{const element=rootRef.current;if(!element)return;const measure=()=>{const width=element.getBoundingClientRect().width;React.startTransition(()=>setMeasuredWidth(width));};measure();if(typeof ResizeObserver!==\"undefined\"){const observer=new ResizeObserver(measure);observer.observe(element);return()=>observer.disconnect();}if(typeof window!==\"undefined\"){window.addEventListener(\"resize\",measure);return()=>window.removeEventListener(\"resize\",measure);}},[]);const rootWidth=style?.width===\"100%\"?\"100%\":cardWidth;const rootHeight=style?.height===\"100%\"?\"100%\":cardHeight;// Motion timing: panel uses `duration`, while foreground content enters\n// after expansion has started and exits quickly on deactivation.\nconst inDelay=Math.min(220,Math.max(96,Math.round(duration*.22)));const inDuration=Math.max(220,Math.round(duration*.42));const outDuration=Math.min(160,Math.max(100,Math.round(duration*.24)));const css=`\n.${cls} {\n    font-family: ${FONT_BODY};\n    --fsc-collapsed: ${collapsedSize}px;\n    --fsc-collapsed-radius: ${collapsedSize/2}px;\n    --fsc-pad: 28px;\n    --fsc-title: ${titleSize}px;\n    --fsc-desc: ${descriptionSize}px;\n    --fsc-arrow: 40px;\n    --fsc-text-max: 74ch;\n    /* Slack inside the clipped transcript viewport so bubble shadows survive. */\n    --fsc-convo-bleed: 12px;\n}\n.${cls}-track {\n    display: flex;\n    flex-direction: row;\n    align-items: stretch;\n    gap: ${gap}px;\n    width: 100%;\n    height: 100%;\n    min-width: 0;\n    min-height: 0;\n    transform: translateX(0);\n    --fsc-mobile-peek: 34px;\n    --fsc-mobile-card: calc(100% - var(--fsc-mobile-peek));\n    --fsc-mobile-step: 0px;\n}\n.${cls}-item {\n    position: relative;\n    display: block;\n    flex: 0 0 max(var(--fsc-collapsed), 6%);\n    min-width: 0;\n    min-height: 0;\n    padding: 0;\n    border: none;\n    appearance: none;\n    background-color: #EEEEEE;\n    border-radius: var(--fsc-collapsed-radius);\n    overflow: hidden;\n    cursor: pointer;\n    text-align: left;\n    -webkit-tap-highlight-color: transparent;\n    isolation: isolate;\n    ${isStatic?\"\":`transition: flex-grow ${duration}ms ${EASE}, border-radius ${duration}ms ${EASE};`}\n}\n.${cls}-item[data-active=\"true\"] {\n    flex: 1 1 0%;\n    border-radius: ${radius}px;\n    cursor: default;\n}\n.${cls}-item:focus-visible {\n    outline: 2px solid ${titleColor};\n    outline-offset: 2px;\n}\n.${cls}-media {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    z-index: 0;\n    transform: scale(1);\n    ${isStatic?\"\":`transition: transform ${duration}ms ${EASE};`}\n}\n.${cls}-item[data-active=\"true\"] .${cls}-media {\n    ${isStatic?\"\":`animation: ${cls}-media-settle ${duration}ms ${EASE} both;`}\n}\n@keyframes ${cls}-media-settle {\n    0% { transform: scale(1.02); }\n    100% { transform: scale(1); }\n}\n/* Video sits on top of the still, which stays as poster and as the background\n   for the collapsed slices. Only the active card mounts video, so the hero\n   downloads two clips instead of twelve. */\n.${cls}-video {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    z-index: 0;\n    opacity: 0;\n    pointer-events: none;\n    ${isStatic?\"\":`transition: opacity ${VIDEO_FADE_MS}ms linear;`}\n}\n.${cls}-video[data-on=\"true\"] {\n    opacity: 1;\n}\n.${cls}-dim,\n.${cls}-scrim {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    z-index: 1;\n    ${isStatic?\"\":`transition: opacity ${duration}ms ${EASE};`}\n}\n.${cls}-dim {\n    background: #000000;\n    opacity: ${collapsedDim};\n}\n.${cls}-item[data-active=\"true\"] .${cls}-dim {\n    opacity: 0;\n}\n.${cls}-scrim {\n    background: linear-gradient(180deg, rgba(0,0,0,0) 38%, rgba(0,0,0,${scrimStrength}) 100%);\n    opacity: 0;\n}\n.${cls}-item[data-active=\"true\"] .${cls}-scrim {\n    opacity: 1;\n}\n/* Vintage grain over the footage. Sits above the media at z-index 2, below\n   the copy and the transcript, so the text never gets textured. */\n.${cls}-grain {\n    position: absolute;\n    inset: 0;\n    z-index: 2;\n    pointer-events: none;\n    opacity: ${(grainStrength*GRAIN_SCALE*.6).toFixed(3)};\n    background-image: url(\"${GRAIN_TEXTURE}\");\n    background-repeat: repeat;\n    ${isStatic?\"\":`animation: ${cls}-grain-boil 1.1s steps(1, end) infinite;`}\n}\n.${cls}-item[data-active=\"true\"] .${cls}-grain {\n    opacity: ${(grainStrength*GRAIN_SCALE).toFixed(3)};\n}\n@keyframes ${cls}-grain-boil {\n    0%   { background-position:    0px    0px; }\n    10%  { background-position:  -37px   19px; }\n    20%  { background-position:   61px  -43px; }\n    30%  { background-position:  -83px  -11px; }\n    40%  { background-position:   29px   67px; }\n    50%  { background-position: -101px   41px; }\n    60%  { background-position:   73px  -79px; }\n    70%  { background-position:  -19px  103px; }\n    80%  { background-position:   91px   13px; }\n    90%  { background-position:  -53px  -61px; }\n    100% { background-position:    0px    0px; }\n}\n.${cls}-content {\n    position: absolute;\n    left: var(--fsc-pad);\n    right: var(--fsc-pad);\n    top: var(--fsc-pad);\n    display: flex;\n    align-items: flex-start;\n    justify-content: flex-start;\n    gap: 20px;\n    opacity: 0;\n    visibility: hidden;\n    transform: translateY(8px);\n    pointer-events: none;\n    z-index: 3;\n    ${isStatic?\"\":`transition: opacity ${outDuration}ms linear, transform ${outDuration}ms ${EASE}, visibility 0ms linear 0ms;`}\n}\n.${cls}-item[data-active=\"true\"] .${cls}-content {\n    visibility: visible;\n    opacity: 1;\n    transform: translateY(0);\n    pointer-events: auto;\n    ${isStatic?\"\":`transition: opacity ${inDuration}ms linear ${inDelay}ms, transform ${inDuration}ms ${EASE} ${inDelay}ms, visibility 0ms linear 0ms;`}\n}\n.${cls}-copy {\n    min-width: 0;\n    max-width: min(48%, 360px);\n}\n.${cls}-title {\n    margin: 0;\n    color: ${titleColor};\n    font-size: clamp(12px, 0.95vw, 14px);\n    line-height: 1.2;\n    font-weight: 450;\n    letter-spacing: -0.01em;\n    /* La pastilla es una etiqueta, no un parrafo: partir \"Recordatorio\n       proactivo\" en dos lineas la engorda sin ganar nada. Que se extienda.\n       flex: none para que nunca se encoja por debajo de su texto. */\n    white-space: nowrap;\n    flex: none;\n}\n.${cls}-agent-head {\n    display: inline-flex;\n    align-items: center;\n    /* Ancho segun el texto. Nada de max-width: la columna de contenido es\n       mas angosta que la pastilla en tablet, y al recortarla el titulo (que\n       por defecto puede encogerse) se salia del fondo redondeado. La card\n       recorta con overflow si algun dia no cupiera. */\n    align-self: flex-start;\n    width: max-content;\n    gap: 7px;\n    padding: 5px 9px;\n    border-radius: 999px;\n    background: rgba(0, 0, 0, 0.36);\n    border: 1px solid rgba(255, 255, 255, 0.24);\n    backdrop-filter: blur(4px);\n    opacity: 0;\n    transform: translateY(7px);\n    ${isStatic?\"\":`transition: opacity ${outDuration}ms linear, transform ${outDuration}ms ${EASE};`}\n}\n/* A live status light. The dot is drawn with pseudo-elements rather than an\n   inline <svg>: an inline SVG sits on the text baseline, so its descender gap\n   pushed the dot off-centre inside the disc. Absolute + translate(-50%,-50%)\n   centres it exactly, at any size. */\n.${cls}-agent-icon {\n    position: relative;\n    flex: none;\n    width: 12px;\n    height: 12px;\n    border-radius: 999px;\n    background: rgba(0, 0, 0, 0.3);\n    color: ${accentColor};\n}\n.${cls}-agent-icon::before,\n.${cls}-agent-icon::after {\n    content: \"\";\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 6px;\n    height: 6px;\n    border-radius: 999px;\n}\n.${cls}-agent-icon::after {\n    background: currentColor;\n    transform: translate(-50%, -50%);\n    ${isStatic?\"\":`animation: ${cls}-status-dot 2400ms ease-in-out infinite;`}\n}\n/* The outward ping. Kept inside the 12px disc: 6px scaled by 2. */\n.${cls}-agent-icon::before {\n    background: currentColor;\n    opacity: 0;\n    transform: translate(-50%, -50%) scale(1);\n    ${isStatic?\"\":`animation: ${cls}-status-ping 2400ms ease-out infinite;`}\n}\n@keyframes ${cls}-status-dot {\n    0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 1; }\n    50% { transform: translate(-50%, -50%) scale(0.78); opacity: 0.7; }\n}\n@keyframes ${cls}-status-ping {\n    0% { transform: translate(-50%, -50%) scale(0.9); opacity: 0.5; }\n    70%, 100% { transform: translate(-50%, -50%) scale(2); opacity: 0; }\n}\n/* Block so it keeps its own line under the title pill, but only as wide as\n   the text so the underline and the hit area don't span the whole column. */\n.${cls}-agent-cta {\n    display: block;\n    width: fit-content;\n    margin: 7px 0 0 2px;\n    color: rgba(255, 255, 255, 0.92);\n    font-size: 12px;\n    line-height: 1.2;\n    letter-spacing: -0.01em;\n    cursor: pointer;\n    text-decoration: underline;\n    text-decoration-color: rgba(255, 255, 255, 0.3);\n    text-underline-offset: 3px;\n    opacity: 0;\n    transform: translateY(7px);\n    ${isStatic?\"\":`transition: opacity ${outDuration}ms linear, transform ${outDuration}ms ${EASE};`}\n}\n.${cls}-item[data-active=\"true\"] .${cls}-agent-head {\n    opacity: 1;\n    transform: translateY(0);\n    ${isStatic?\"\":`transition: opacity ${inDuration}ms linear ${inDelay}ms, transform ${inDuration}ms ${EASE} ${inDelay}ms;`}\n}\n.${cls}-agent-cta:hover,\n.${cls}-agent-cta:focus-visible {\n    color: #ffffff;\n    text-decoration-color: rgba(255, 255, 255, 0.85);\n}\n.${cls}-item[data-active=\"true\"] .${cls}-agent-cta {\n    opacity: 1;\n    transform: translateY(0);\n    ${isStatic?\"\":`transition: opacity ${inDuration}ms linear ${inDelay+65}ms, transform ${inDuration}ms ${EASE} ${inDelay+65}ms;`}\n}\n.${cls}-desc {\n    display: none;\n}\n/* Transcript viewport: fixed region, clipped, with the column pinned to its\n   bottom edge so new messages rise into it and old ones dissolve at the top. */\n.${cls}-conversation {\n    position: absolute;\n    top: calc(var(--fsc-pad) + 64px);\n    right: calc(var(--fsc-pad) - var(--fsc-convo-bleed));\n    bottom: calc(var(--fsc-pad) - var(--fsc-convo-bleed));\n    width: calc(min(360px, 46%) + var(--fsc-convo-bleed) * 2);\n    overflow: hidden;\n    z-index: 3;\n    opacity: 0;\n    visibility: hidden;\n    pointer-events: none;\n    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 56px);\n    mask-image: linear-gradient(to bottom, transparent 0, #000 56px);\n    ${isStatic?\"\":`transition: opacity ${outDuration}ms linear, visibility 0ms linear 0ms;`}\n}\n.${cls}-item[data-active=\"true\"] .${cls}-conversation {\n    visibility: visible;\n    opacity: 1;\n    ${isStatic?\"\":`transition: opacity ${inDuration}ms linear ${inDelay+40}ms, visibility 0ms linear 0ms;`}\n}\n/* No will-change and no resting transform on purpose: either one would turn\n   this stack into a backdrop root, and the glass bubbles inside would have\n   nothing left to blur. The FLIP clears its own transform when it finishes. */\n.${cls}-convo-stack {\n    position: absolute;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-end;\n    gap: 10px;\n    /* Keeps the bubbles off the viewport's clip edge so their drop shadow is\n       not sliced. The viewport grows by the same amount, so the bubbles stay\n       exactly where they were on screen. No bleed is needed at the top — the\n       mask already fades that edge out. */\n    padding: 0 var(--fsc-convo-bleed) var(--fsc-convo-bleed);\n}\n/* The bubble entry is a keyframe animation, not a transition: a message is\n   mounted only when it is due, so the animation has to fire on mount. */\n@keyframes ${cls}-pop-agent {\n    from { opacity: 0.001; transform: scale(0.3) rotate(0.4deg); }\n    to { opacity: 1; transform: none; }\n}\n@keyframes ${cls}-pop-customer {\n    from { opacity: 0.001; transform: scale(0.3) rotate(-0.4deg); }\n    to { opacity: 1; transform: none; }\n}\n/* Two clearly different materials, the way ElevenLabs separates its speakers:\n   Silia is frosted glass over the photo, the customer is flat black. */\n/* Matches the ElevenLabs transcript: no speaker labels, generous padding and\n   radius, the agent in flat white, the customer in glass that takes its hue\n   from the photo behind it. */\n/* One corner per bubble stays square to mark where the message comes from:\n   the agent squares its top-left, the customer its bottom-right.\n   Shorthand order: top-left, top-right, bottom-right, bottom-left. */\n.${cls}-msg {\n    max-width: 88%;\n    padding: 11px 14px;\n    font-size: 13px;\n    line-height: 1.38;\n    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);\n}\n.${cls}-msg[data-speaker=\"agent\"] {\n    align-self: flex-start;\n    border-radius: 4px 14px 14px 14px;\n    color: #0f1115;\n    background: #ffffff;\n    ${isStatic?\"\":`animation: ${cls}-pop-agent ${MSG_IN_MS}ms ${MSG_EASE} both;`}\n}\n/* brightness() keeps the white text legible over a bright photo, while\n   saturate() lets the backdrop's own colour bleed through the glass. */\n.${cls}-msg[data-speaker=\"customer\"] {\n    align-self: flex-end;\n    border-radius: 14px 14px 4px 14px;\n    color: #ffffff;\n    background: rgba(10, 10, 12, 0.3);\n    -webkit-backdrop-filter: blur(24px) saturate(160%) brightness(0.55);\n    backdrop-filter: blur(24px) saturate(160%) brightness(0.55);\n    border: 1px solid rgba(255, 255, 255, 0.16);\n    ${isStatic?\"\":`animation: ${cls}-pop-customer ${MSG_IN_MS}ms ${MSG_EASE} both;`}\n}\n/* A step that already played comes back whole, with no second flourish. */\n.${cls}-convo-stack[data-instant=\"true\"] .${cls}-msg {\n    animation: none;\n}\n.${cls}-msg-word {\n    opacity: 0;\n    ${isStatic?\"opacity: 1;\":`transition: opacity ${WORD_FADE_MS}ms ${WORD_EASE};`}\n}\n.${cls}-msg-word[data-spoken=\"true\"] {\n    opacity: 1;\n}\n/* The speaker is carried by side and colour, as in the reference. The name\n   stays in the DOM for screen readers only. */\n.${cls}-msg-author {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n}\n.${cls}-slice-label {\n    position: absolute;\n    left: 50%;\n    bottom: 14px;\n    transform: translateX(-50%);\n    z-index: 3;\n    writing-mode: vertical-rl;\n    text-orientation: mixed;\n    font-size: 11px;\n    font-weight: 450;\n    letter-spacing: 0.02em;\n    color: rgba(255, 255, 255, 0.88);\n    opacity: 0.78;\n    pointer-events: none;\n    max-height: 72%;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    overflow: hidden;\n}\n.${cls}-item[data-active=\"true\"] .${cls}-slice-label {\n    opacity: 0;\n}\n.${cls}-arrow {\n    flex: 0 0 auto;\n    width: var(--fsc-arrow);\n    height: var(--fsc-arrow);\n    border-radius: 999px;\n    border: none;\n    display: grid;\n    place-items: center;\n    background: ${arrowBackground};\n    color: ${arrowColor};\n    cursor: pointer;\n    padding: 0;\n}\n.${cls}[data-orient=\"vertical\"] .${cls}-track {\n    flex-direction: column;\n}\n.${cls}[data-orient=\"vertical\"] .${cls}-slice-label {\n    /* Stacked mode: the collapsed bars carry just the agent title in Klarheit\n       Book, tucked against the right edge (per the landing mobile design). */\n    writing-mode: horizontal-tb;\n    left: auto;\n    right: 16px;\n    bottom: 50%;\n    transform: translateY(50%);\n    max-width: calc(100% - 32px);\n    text-align: right;\n    font-family: ${FONT_BODY};\n    font-size: 12px;\n}\n.${cls}[data-orient=\"vertical\"] {\n    --fsc-collapsed: ${collapsedSizeMobile}px;\n    --fsc-collapsed-radius: ${collapsedSizeMobile/2}px;\n    --fsc-pad: 20px;\n    --fsc-title: ${Math.max(16,Math.round(titleSize*.78))}px;\n    --fsc-desc: ${Math.max(12,Math.round(descriptionSize*.88))}px;\n    --fsc-arrow: 34px;\n    --fsc-text-max: 38ch;\n}\n.${cls}[data-orient=\"vertical\"] .${cls}-content {\n    align-items: flex-start;\n}\n.${cls}[data-orient=\"vertical\"] .${cls}-copy {\n    max-width: min(56%, 360px);\n}\n.${cls}[data-orient=\"vertical\"] .${cls}-conversation {\n    width: calc(min(320px, 54%) + var(--fsc-convo-bleed) * 2);\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-track {\n    flex-direction: row;\n    align-items: stretch;\n    height: 100%;\n    transform: translate3d(calc(var(--fsc-mobile-step) * -1), 0, 0);\n    ${isStatic?\"\":`transition: transform ${Math.max(260,Math.round(duration*.62))}ms ${EASE};`}\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] {\n    --fsc-collapsed: ${Math.max(18,Math.round(collapsedSizeMobile*.75))}px;\n    --fsc-collapsed-radius: ${Math.max(10,Math.round(collapsedSizeMobile*.75/2))}px;\n    --fsc-pad: 16px;\n    --fsc-title: ${Math.max(16,Math.round(titleSize*.78))}px;\n    --fsc-desc: ${Math.max(12,Math.round(descriptionSize*.88))}px;\n    --fsc-arrow: 34px;\n    --fsc-text-max: 38ch;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-item {\n    flex: 0 0 var(--fsc-mobile-card);\n    border-radius: ${Math.max(16,Math.round(radius*.9))}px;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-item[data-active=\"true\"] {\n    flex: 0 0 var(--fsc-mobile-card);\n    border-radius: ${Math.max(16,Math.round(radius*.9))}px;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-content {\n    align-items: flex-start;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-copy {\n    max-width: min(70%, 320px);\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-conversation {\n    width: calc(min(260px, 66%) + var(--fsc-convo-bleed) * 2);\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-convo-stack {\n    gap: 6px;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-msg {\n    font-size: 12px;\n    padding: 9px 12px;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-msg[data-speaker=\"agent\"] {\n    border-radius: 4px 12px 12px 12px;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-msg[data-speaker=\"customer\"] {\n    border-radius: 12px 12px 4px 12px;\n}\n.${cls}[data-orient=\"auto\"][data-mobile=\"true\"] .${cls}-slice-label {\n    writing-mode: horizontal-tb;\n    left: 14px;\n    bottom: 50%;\n    transform: translateY(50%);\n    max-width: calc(100% - 24px);\n}\n@media (max-width: ${mobileCutoff}px) {\n    .${cls}[data-orient=\"auto\"] .${cls}-track {\n        flex-direction: row;\n        align-items: stretch;\n        height: 100%;\n        transform: translate3d(calc(var(--fsc-mobile-step) * -1), 0, 0);\n        ${isStatic?\"\":`transition: transform ${Math.max(260,Math.round(duration*.62))}ms ${EASE};`}\n    }\n    .${cls}[data-orient=\"auto\"] {\n        --fsc-collapsed: ${Math.max(18,Math.round(collapsedSizeMobile*.75))}px;\n        --fsc-collapsed-radius: ${Math.max(10,Math.round(collapsedSizeMobile*.75/2))}px;\n        --fsc-pad: 16px;\n        --fsc-title: ${Math.max(16,Math.round(titleSize*.78))}px;\n        --fsc-desc: ${Math.max(12,Math.round(descriptionSize*.88))}px;\n        --fsc-arrow: 34px;\n        --fsc-text-max: 38ch;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-item {\n        flex: 0 0 var(--fsc-mobile-card);\n        border-radius: ${Math.max(16,Math.round(radius*.9))}px;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-item[data-active=\"true\"] {\n        flex: 0 0 var(--fsc-mobile-card);\n        border-radius: ${Math.max(16,Math.round(radius*.9))}px;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-content {\n        align-items: flex-start;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-copy {\n        max-width: min(70%, 320px);\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-conversation {\n        width: calc(min(260px, 66%) + var(--fsc-convo-bleed) * 2);\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-convo-stack {\n        gap: 6px;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-msg {\n        font-size: 12px;\n        padding: 9px 12px;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-msg[data-speaker=\"agent\"] {\n        border-radius: 4px 12px 12px 12px;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-msg[data-speaker=\"customer\"] {\n        border-radius: 12px 12px 4px 12px;\n    }\n    .${cls}[data-orient=\"auto\"] .${cls}-slice-label {\n        writing-mode: horizontal-tb;\n        left: 14px;\n        bottom: 50%;\n        transform: translateY(50%);\n        max-width: calc(100% - 24px);\n    }\n}\n@media (max-width: 1100px) and (min-width: ${mobileCutoff+1}px) {\n    .${cls}-track {\n        gap: ${Math.max(10,Math.round(gap*.9))}px;\n    }\n    .${cls}-item {\n        flex-basis: max(${Math.max(54,collapsedSize)}px, 8.2%);\n    }\n    .${cls}-copy {\n        max-width: min(58%, 360px);\n    }\n    .${cls}-conversation {\n        width: calc(min(300px, 50%) + var(--fsc-convo-bleed) * 2);\n    }\n    .${cls}-msg {\n        font-size: 12px;\n    }\n}\n@media (prefers-reduced-motion: reduce) {\n    .${cls}-track,\n    .${cls}-item,\n    .${cls}-media,\n    .${cls}-video,\n    .${cls}-dim,\n    .${cls}-scrim,\n    .${cls}-content,\n    .${cls}-item[data-active=\"true\"] .${cls}-content,\n    .${cls}-agent-head,\n    .${cls}-agent-cta,\n    .${cls}-grain,\n    .${cls}-conversation,\n    .${cls}-convo-stack,\n    .${cls}-msg,\n    .${cls}-msg-word {\n        animation: none !important;\n        transition-duration: 1ms !important;\n        transition-delay: 0ms !important;\n    }\n    /* The JS driver also skips playback under reduced motion, but if the\n       preference flips mid-session the bubbles must still be legible. */\n    .${cls}-msg {\n        opacity: 1 !important;\n        transform: none !important;\n    }\n    .${cls}-msg-word {\n        opacity: 1 !important;\n    }\n    /* The status light stops pulsing but stays lit. */\n    .${cls}-agent-icon::before,\n    .${cls}-agent-icon::after {\n        animation: none !important;\n    }\n    .${cls}-agent-icon::after {\n        transform: translate(-50%, -50%) !important;\n        opacity: 1 !important;\n    }\n    .${cls}-agent-icon::before {\n        opacity: 0 !important;\n    }\n}\n`;const allowHover=trigger===\"hover\"||trigger===\"both\";const allowClick=trigger===\"click\"||trigger===\"both\";const mobilePeek=34;const onPointerDown=React.useCallback(event=>{if(!isMobileSlider||total<2)return;if(event.pointerType===\"mouse\"&&event.button!==0)return;swipeStartX.current=event.clientX;swipePointerId.current=event.pointerId;event.currentTarget.setPointerCapture(event.pointerId);},[isMobileSlider,total]);const onPointerUp=React.useCallback(event=>{if(!isMobileSlider||total<2)return;if(swipePointerId.current!==event.pointerId)return;const start=swipeStartX.current;swipeStartX.current=null;swipePointerId.current=null;if(start===null)return;const deltaX=event.clientX-start;const threshold=36;if(deltaX<=-threshold){goNext();}else if(deltaX>=threshold){goPrev();}},[goNext,goPrev,isMobileSlider,total]);return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:cls,\"data-compat\":compatNoop?\"true\":\"false\",\"data-orient\":orientation,\"data-mobile\":isMobileSlider?\"true\":\"false\",style:{position:\"relative\",width:rootWidth,height:rootHeight,maxWidth:\"100%\",overflow:\"hidden\",touchAction:isMobileSlider?\"pan-y\":\"auto\",...style,fontFamily:FONT_BODY},children:[/*#__PURE__*/_jsx(\"style\",{children:css}),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-track`,role:\"tablist\",\"aria-label\":\"Steps\",\"aria-orientation\":orientation===\"vertical\"?\"vertical\":\"horizontal\",onPointerDown:onPointerDown,onPointerUp:onPointerUp,onPointerCancel:()=>{swipeStartX.current=null;swipePointerId.current=null;},style:isMobileSlider?{[\"--fsc-mobile-peek\"]:`${mobilePeek}px`,[\"--fsc-mobile-step\"]:`calc((100% - ${mobilePeek}px + ${gap}px) * ${safeIndex})`}:undefined,children:normalizedSteps.map((step,index)=>{const isActive=index===safeIndex;// Only the active step renders bubbles, and only as many as\n// playback has reached. Inactive steps render none — the\n// collapsed slice has no room for them anyway.\nconst conversationWords=isActive?reveal:[];const conversationItems=isActive?(isMobileSlider?step.conversation.slice(0,3):step.conversation).slice(0,conversationWords.length):[];const conversationInstant=isStatic||prefersReducedMotion||playedRef.current.has(index);return /*#__PURE__*/_jsxs(\"button\",{type:\"button\",role:\"tab\",\"aria-selected\":isActive,\"aria-label\":`Seleccionar ${step.title}`,className:`${cls}-item`,\"data-active\":isActive?\"true\":\"false\",onClick:allowClick&&!isActive?()=>focusTo(index):undefined,onMouseEnter:allowHover&&!isStatic?()=>focusTo(index):undefined,onFocus:allowHover&&!isStatic?()=>focusTo(index):undefined,children:[(step.poster||step.image?.src)&&/*#__PURE__*/_jsx(\"img\",{className:`${cls}-media`,src:step.poster||step.image?.src,srcSet:step.poster?undefined:step.image?.srcSet,alt:step.image.alt||\"\",loading:index===0?\"eager\":\"lazy\",decoding:\"async\"}),isActive&&activeVideos.map((src,videoIndex)=>/*#__PURE__*/_jsx(\"video\",{ref:node=>{videoRefs.current[videoIndex]=node;},className:`${cls}-video`,\"data-on\":videoIndex===videoTurn%activeVideos.length?\"true\":\"false\",src:src,poster:step.poster||step.image?.src,muted:true,playsInline:true,preload:\"auto\",\"aria-hidden\":\"true\",onEnded:videoIndex===videoTurn%activeVideos.length?advanceVideo:undefined},src)),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-dim`}),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-scrim`}),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-grain`,\"aria-hidden\":\"true\"}),!isActive&&sliceLabels&&/*#__PURE__*/_jsx(\"div\",{className:`${cls}-slice-label`,children:step.title}),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-content`,children:/*#__PURE__*/_jsxs(\"div\",{className:`${cls}-copy`,children:[/*#__PURE__*/_jsxs(\"div\",{className:`${cls}-agent-head`,children:[/*#__PURE__*/_jsx(\"span\",{className:`${cls}-agent-icon`,\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-title`,style:{fontFamily:FONT_TITLE},children:step.title})]}),cardCTA.trim().length>0&&(typeof step.link===\"string\"&&step.link.trim().length>0?/*#__PURE__*/_jsx(\"a\",{className:`${cls}-agent-cta`,href:step.link,tabIndex:isActive?0:-1,onClick:event=>event.stopPropagation(),children:cardCTA}):/*#__PURE__*/_jsx(\"span\",{className:`${cls}-agent-cta`,role:\"button\",tabIndex:isActive?0:-1,onClick:openLeadModal,onKeyDown:event=>{if(event.key===\"Enter\"||event.key===\" \"){event.preventDefault();openLeadModal(event);}},children:cardCTA}))]})}),conversationItems.length>0&&/*#__PURE__*/_jsx(\"div\",{className:`${cls}-conversation`,\"aria-hidden\":!isActive,children:/*#__PURE__*/_jsx(\"div\",{className:`${cls}-convo-stack`,\"data-instant\":conversationInstant?\"true\":\"false\",ref:isActive?stackRef:undefined,children:conversationItems.map((message,messageIndex)=>/*#__PURE__*/_jsxs(\"div\",{className:`${cls}-msg`,\"data-speaker\":message.speaker,style:{fontFamily:FONT_BODY},children:[/*#__PURE__*/_jsxs(\"span\",{className:`${cls}-msg-author`,children:[message.label,\":\"]}),message.words.map((word,wordIndex)=>/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{className:`${cls}-msg-word`,\"data-spoken\":wordIndex<(conversationWords[messageIndex]??0)?\"true\":\"false\",children:word}),wordIndex<message.words.length-1?\" \":\"\"]},wordIndex))]},`${index}-${messageIndex}`))})})]},index);})})]});}addPropertyControls(VoiceFunctionsCarousel,{steps:{type:ControlType.Array,title:\"Steps\",defaultValue:[{title:\"We understand your operation\",description:\"We map your processes, systems, and friction points. Identify where automation creates real impact.\",image:fallbackImages[0]},{title:\"We prioritize what drives impact\",description:\"Define what to automate first based on volume, urgency, and value. A roadmap focused on outcomes — not features.\",image:fallbackImages[1]},{title:\"We configure and train your agents\",description:\"Agents learn your rules, workflows, and data. Systems connect. Automation runs behind the scenes.\",image:fallbackImages[2]},{title:\"We deploy and optimize in production\",description:\"Agents execute from day one. We monitor, refine, and scale with control.\",image:fallbackImages[3]}],control:{type:ControlType.Object,controls:{title:{type:ControlType.String,defaultValue:\"Step Title\"},description:{type:ControlType.String,defaultValue:\"Step description\",displayTextArea:true},image:{type:ControlType.ResponsiveImage},// Leave empty to render no chat at all.\nconversation:{type:ControlType.String,title:\"Conversation\",defaultValue:\"\",displayTextArea:true,description:`One message per line. Start a line with ${AGENT_MARKER} for Silia and ${CUSTOMER_MARKER} for the customer. Leave empty for no chat.`},link:{type:ControlType.String,title:\"Link\",defaultValue:\"\",description:\"Where this slice CTA goes. Empty opens the Silia Lead Modal instead.\"},// Plain URLs, not ControlType.File: a file control nested in an\n// object inside an array silently drops whatever is written to\n// it, the same way a nested array does. Paste the asset URL\n// Framer gives you after uploading the clip.\nvideoA:{type:ControlType.String,title:\"Video A\",defaultValue:\"\",description:\"Asset URL of the first clip. Empty means no video.\"},videoB:{type:ControlType.String,title:\"Video B\",defaultValue:\"\",description:\"Second clip. It crossfades with Video A every ~4s.\"},poster:{type:ControlType.String,title:\"Poster\",defaultValue:\"\",description:\"Asset URL of the still shown before the clips paint. Empty falls back to Image.\"},customerLabel:{type:ControlType.String,title:\"Customer Label\",defaultValue:\"Cliente\",description:\"Name shown above the customer bubbles, e.g. Paciente.\"}}}},trigger:{type:ControlType.Enum,title:\"Focus On\",defaultValue:\"click\",options:[\"hover\",\"click\",\"both\"],optionTitles:[\"Hover\",\"Click\",\"Both\"],displaySegmentedControl:true},orientation:{type:ControlType.Enum,title:\"Direction\",defaultValue:\"auto\",options:[\"auto\",\"horizontal\",\"vertical\"],optionTitles:[\"Auto\",\"Row\",\"Column\"],displaySegmentedControl:true},breakpoint:{type:ControlType.Number,title:\"Stack Below\",defaultValue:809,min:320,max:1400,step:10,unit:\"px\",hidden(props){return props.orientation!==\"auto\";}},cardWidth:{type:ControlType.Number,title:\"Width\",defaultValue:1056,min:280,max:1600,step:8},cardHeight:{type:ControlType.Number,title:\"Height\",defaultValue:320,min:120,max:900,step:4},collapsedSize:{type:ControlType.Number,title:\"Slice Size\",defaultValue:56,min:24,max:140,step:1,unit:\"px\"},collapsedSizeMobile:{type:ControlType.Number,title:\"Slice (Stacked)\",defaultValue:44,min:20,max:120,step:1,unit:\"px\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:20,min:0,max:60,step:1},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:12,min:0,max:36,step:1},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:560,min:120,max:1600,step:20,unit:\"ms\"},collapsedDim:{type:ControlType.Number,title:\"Slice Dim\",defaultValue:.15,min:0,max:.8,step:.01},scrimStrength:{type:ControlType.Number,title:\"Scrim\",defaultValue:.72,min:0,max:1,step:.02},titleSize:{type:ControlType.Number,title:\"Title Size\",defaultValue:28,min:12,max:64,step:1},descriptionSize:{type:ControlType.Number,title:\"Body Size\",defaultValue:16,min:10,max:28,step:1},titleColor:{type:ControlType.Color,title:\"Title Color\",defaultValue:\"#FFFFFF\"},descriptionColor:{type:ControlType.Color,title:\"Body Color\",defaultValue:\"#FFFFFF\"},showArrow:{type:ControlType.Boolean,title:\"Arrow\",defaultValue:true},sliceLabels:{type:ControlType.Boolean,title:\"Slice Labels\",defaultValue:true,description:\"Vertical title on the collapsed slices. Off leaves them clean.\"},cardCTA:{type:ControlType.String,title:\"Card CTA\",defaultValue:\"\",description:\"Link under the card title. Leave empty to hide it. Opens the Silia Lead Modal.\"},grainStrength:{type:ControlType.Number,title:\"Grain\",defaultValue:.07,min:0,max:.4,step:.005,displayStepper:false,description:\"Vintage grain over the footage. 0 turns it off.\"},modalKey:{type:ControlType.String,title:\"Modal Key\",defaultValue:\"\",description:\"Must match the External Open Key of the Silia Lead Modal to open. Empty opens every keyless modal on the page.\",hidden(props){return!props.cardCTA;}},pixelate:{type:ControlType.Boolean,title:\"Mosaic\",defaultValue:true,description:\"Block mosaic with lime accent blocks, matching the blog artwork treatment.\"},pixelBlockSize:{type:ControlType.Number,title:\"Block Size\",defaultValue:19,min:4,max:80,step:1,unit:\"px\",hidden(props){return!props.pixelate;}},accentColor:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#CAF91A\",hidden(props){return!props.pixelate;}},accentDensity:{type:ControlType.Number,title:\"Accent Amount\",defaultValue:1.8,min:0,max:12,step:.1,unit:\"%\",hidden(props){return!props.pixelate;}},arrowBackground:{type:ControlType.Color,title:\"Arrow Fill\",defaultValue:\"#FFFFFF\",hidden(props){return!props.showArrow;}},arrowColor:{type:ControlType.Color,title:\"Arrow Icon\",defaultValue:\"#000000\",hidden(props){return!props.showArrow;}},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:false},intervalMs:{type:ControlType.Number,title:\"Interval\",defaultValue:4e3,min:1e3,max:12e3,step:250,unit:\"ms\",hidden(props){return!props.autoplay;}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VoiceFunctionsCarousel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1056\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"560\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VoiceFunctionsCarousel.map"],"mappings":"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"}