// === Una historia real (11s · stop:true) — contexto antes del caso Backend ===
// El espectador viene del acto Flex (todo era Dinaup/play): este slide le saca de
// ahí — esto es UNA HISTORIA de una empresa que construyó SU PROPIA app sobre
// Dinaup. Texto puro pausado (patrón explainer), sin cues. El deck se DETIENE al
// acabar (stop:true en app.jsx): la vida en reposo (glow, respiración del titular,
// nudge de la tecla →) va en animaciones CSS, no sobre t — patrón permitido para
// efectos secundarios (como slide-flex-pregunta).

function SlideBackendHistoria({ t }){
  // Beats reanclados al audio real (11.75s): 0.3 eyebrow · 0.9 titular · 2.0 hairline · 0.9/3.92/6.43 frases · 10.15 pie
  const eyeP = clamp((t-0.3)/0.6, 0, 1);
  const h2P  = clamp((t-0.9)/1.0, 0, 1);
  const h2e  = Easing.easeOutCubic(h2P);
  const barP = clamp((t-2.0)/0.7, 0, 1);
  const barE = Easing.easeOutCubic(barP);
  const footAt = 10.15; // último beat: cae en "Pues mira cómo terminó" (10.15) → settle ~10.75, ~1s antes del dur (11.75)
  const footE  = Easing.easeOutCubic(clamp((t-footAt)/0.8, 0, 1));

  // SOLO el setup del Bloque 26 (el payoff «backend Dinaup / construyó la app» se locuta
  // y se muestra en la escena SIGUIENTE — aquí no se adelanta):
  // 50 empleados (0.9) · presupuestos, una locura (3.92) · un programador junior (6.43).
  const lines = [
    { at:0.9, icon:'person', body:(
      <>Una empresa de <span style={{fontWeight:700,color:'#fff'}}>50 empleados</span>.</>
    )},
    { at:3.92, icon:'layers', body:(
      <>Pidió presupuestos para su app… <span style={{fontWeight:700,color:'#fff'}}>una locura</span>.</>
    )},
    { at:6.43, icon:'play', body:(
      <>Y su equipo técnico era <span style={{fontWeight:700,color:'#fff'}}>un programador junior</span>, recién llegado.</>
    )},
  ];

  // Iconos de línea que se dibujan (pathLength normalizado → dashoffset paramétrico)
  const drawIcon = (kind, p) => {
    const off = 1 - Easing.easeInOutQuad(p);
    const common = { fill:'none', stroke:'#62B4FF', strokeWidth:1.8, strokeLinecap:'round', strokeLinejoin:'round', pathLength:1, strokeDasharray:1, strokeDashoffset:off };
    if (kind === 'person') return (
      <svg width="46" height="46" viewBox="0 0 24 24">
        <circle cx="12" cy="7.4" r="3.6" {...common}/>
        <path d="M4.6 20.5 C4.6 15.9 7.9 13.4 12 13.4 C16.1 13.4 19.4 15.9 19.4 20.5" {...common}/>
      </svg>
    );
    if (kind === 'layers') return (
      <svg width="46" height="46" viewBox="0 0 24 24">
        <path d="M12 3.2 L21 8 L12 12.8 L3 8 Z" {...common}/>
        <path d="M3 12.4 L12 17.2 L21 12.4" {...common}/>
        <path d="M3 16.6 L12 21.4 L21 16.6" {...common}/>
      </svg>
    );
    return (
      <svg width="46" height="46" viewBox="0 0 24 24">
        <circle cx="12" cy="12" r="8.8" {...common}/>
        <path d="M10.1 8.7 L15.7 12 L10.1 15.3 Z" {...common}/>
      </svg>
    );
  };

  return (
    <SlideCanvas variant="dark-deep">
      {/* Glow suave de profundidad tras el bloque de texto — respira aunque t esté congelado */}
      <div style={{position:'absolute',inset:0,pointerEvents:'none',opacity:h2e}}>
        <div style={{position:'absolute',inset:0,background:'radial-gradient(ellipse 62% 48% at 50% 36%, rgba(0,133,255,0.11), transparent 62%)',animation:'bhGlow 7s ease-in-out infinite'}}/>
      </div>

      {/* Eyebrow */}
      <div style={{position:'absolute',top:150,left:0,right:0,textAlign:'center',opacity:eyeP,transform:`translateY(${(1-Easing.easeOutCubic(eyeP))*-8}px)`}}>
        <span className="f-mono" style={{display:'inline-flex',alignItems:'center',gap:14,fontSize:13,fontWeight:600,letterSpacing:'3px',color:'rgba(255,255,255,0.45)'}}>
          <span style={{width:26,height:2,borderRadius:2,background:'rgba(0,193,255,0.35)'}}/>
          UNA HISTORIA REAL
          <span style={{width:26,height:2,borderRadius:2,background:'rgba(0,193,255,0.35)'}}/>
        </span>
      </div>

      {/* Titular grande — respiración sutil en reposo */}
      <div style={{position:'absolute',top:204,left:0,right:0,textAlign:'center',animation:'bhBreath 8s ease-in-out infinite'}}>
        <h2 className="f-plex" style={{fontSize:66,fontWeight:700,letterSpacing:'-0.035em',color:'#fff',margin:0,lineHeight:1.08,opacity:h2e,transform:`translateY(${(1-h2e)*16}px)`}}>
          Querían <span className="grad-text">su propia app.</span>
        </h2>
      </div>

      {/* Hairline corporativa — 4 tramos sólidos, entra tras el titular */}
      <div style={{position:'absolute',top:330,left:'50%',transform:`translateX(-50%) scaleX(${barE})`,width:220,height:3,borderRadius:100,overflow:'hidden',display:'flex',opacity:barP}}>
        <div style={{flex:1,background:'#00C1FF'}}/>
        <div style={{flex:1,background:'#FF6751'}}/>
        <div style={{flex:1,background:'#56E16A'}}/>
        <div style={{flex:1,background:'#FFDC18'}}/>
      </div>

      {/* Las tres frases */}
      <div style={{position:'absolute',top:464,left:'50%',transform:'translateX(-50%)',width:1300,display:'flex',flexDirection:'column',gap:56}}>
        {lines.map((ln,i)=>{
          const iconP = clamp((t-ln.at)/0.8, 0, 1);
          const txtP  = clamp((t-(ln.at+0.25))/0.7, 0, 1);
          const txtE  = Easing.easeOutCubic(txtP);
          return (
            <div key={i} style={{display:'flex',alignItems:'center',gap:30}}>
              <div style={{width:54,height:54,flexShrink:0,display:'flex',alignItems:'center',justifyContent:'center',opacity:clamp(iconP*1.6,0,1),filter:'drop-shadow(0 0 14px rgba(0,133,255,0.45))'}}>
                {drawIcon(ln.icon, iconP)}
              </div>
              <div className="f-plex" style={{fontSize:33,fontWeight:400,letterSpacing:'-0.015em',lineHeight:1.32,whiteSpace:'nowrap',color:'rgba(255,255,255,0.80)',opacity:txtE,transform:`translateY(${(1-txtE)*14}px)`}}>
                {ln.body}
              </div>
            </div>
          );
        })}
      </div>

      {/* Pie — hint para el presentador, con la flecha como keycap */}
      <div style={{position:'absolute',bottom:96,left:0,right:0,textAlign:'center',opacity:footE,transform:`translateY(${(1-footE)*10}px)`}}>
        <span className="f-mono" style={{display:'inline-flex',alignItems:'center',gap:9,fontSize:13,color:'rgba(255,255,255,0.42)',letterSpacing:'0.5px'}}>
          Pulsa
          <span style={{display:'inline-flex',alignItems:'center',justifyContent:'center',minWidth:26,height:24,padding:'0 7px',border:'1px solid rgba(255,255,255,0.28)',borderBottom:'2px solid rgba(255,255,255,0.28)',borderRadius:6,background:'rgba(255,255,255,0.06)',color:'rgba(255,255,255,0.75)',fontSize:13,animation:'bhNudge 1.8s ease-in-out infinite'}}>→</span>
          para ver cómo lo hicieron
        </span>
      </div>

      <style>{`
        @keyframes bhBreath{0%,100%{transform:scale(1)}50%{transform:scale(1.012)}}
        @keyframes bhGlow{0%,100%{opacity:0.6}50%{opacity:1}}
        @keyframes bhNudge{0%,100%{transform:translateX(0)}50%{transform:translateX(3px)}}
      `}</style>
    </SlideCanvas>
  );
}

Object.assign(window, { SlideBackendHistoria });
