// === 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 pausados: 0.4 eyebrow · 0.8 titular · 1.6 hairline · 2.6/5.0/7.4 frases · 9.4 pie
  const eyeP = clamp((t-0.4)/0.6, 0, 1);
  const h2P  = clamp((t-0.8)/1.0, 0, 1);
  const h2e  = Easing.easeOutCubic(h2P);
  const barP = clamp((t-1.6)/0.7, 0, 1);
  const barE = Easing.easeOutCubic(barP);
  const footAt = 9.4; // último beat: 9.4 + 0.8 = 10.2 → muere 0.8s antes del dur (11)
  const footE  = Easing.easeOutCubic(clamp((t-footAt)/0.8, 0, 1));

  // Tres frases, una cada 2.4s — que respiren y se lean enteras.
  const lines = [
    { at:2.6, icon:'person', body:(
      <>Una empresa de <span style={{fontWeight:700,color:'#fff'}}>50 empleados</span>. Un desarrollador <span style={{fontWeight:700,color:'#fff'}}>junior</span>.</>
    )},
    { at:5.0, icon:'layers', body:(
      <>Dinaup puso <span style={{fontWeight:700,color:'#fff'}}>el backend y el backoffice</span>:<br/>sin base de datos que montar, sin servidores que cuidar.</>
    )},
    { at:7.4, icon:'play', body:(
      <>El junior, con ayuda de la IA, <span style={{fontWeight:700,color:'#fff'}}>construyó la app</span>. Ejecutar, y a funcionar.</>
    )},
  ];

  // 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 });
