<section x-show="step === 3" x-transition x-ref="step3" x-data="{
  // Cabecera proveniente del paso 1
periodo: <?php echo \Illuminate\Support\Js::from($ejecucion['periodo'] ?? ($seleccion['trimestre'] ?? ''))->toHtml() ?>,
  departamento: <?php echo \Illuminate\Support\Js::from($ejecucion['departamento'] ?? '')->toHtml() ?>,
  municipio: <?php echo \Illuminate\Support\Js::from($ejecucion['municipio'] ?? '')->toHtml() ?>,

  filas: [],
  mapa(p){
    const T1 = ['Junio','Julio','Agosto'];
    const T2 = ['Septiembre','Octubre','Noviembre'];
    const T3 = ['Diciembre','Enero','Febrero'];
    const T4 = ['Marzo','Abril','Mayo'];
    if (p === 'I') return T1;
    if (p === 'I-II') return [...T1, ...T2];
    if (p === 'I-II-III') return [...T1, ...T2, ...T3];
    if (p === 'I-II-III-IV') return [...T1, ...T2, ...T3, ...T4];
    return [];
  },
  rearmarFilas(){
    const per = (this.periodo || '').trim();
    const meses = this.mapa(per);
    this.filas = meses.map(m => ({
      departamento: (this.departamento || '').trim(),
      municipio: (this.municipio || '').trim(),
      mes: m,
      poblacion: ''
    }));
  }
}" x-init="
  rearmarFilas();
  window.addEventListener('periodo-cambio', e => { periodo = e.detail || periodo; rearmarFilas(); });
  // Empuja una sincronización inicial para que la matriz lea las poblaciones
  requestAnimationFrame(() => window.dispatchEvent(new CustomEvent('sync-resumen')));
" class="sec sec-azul">

  <h2 class="sec-title" style="color:var(--c-blue-900)">EJECUCIÓN CONTRACTUAL</h2>

  <div class="mt-6 border rounded-lg p-4">
    <h3 class="sec-title" style="color:var(--c-blue-900)">INFORMACIÓN DE POBLACIÓN <span class="badge badge-required">*
        Obligatorio</span></h3>

    <input type="hidden" name="ejecucion[periodo]" :value="periodo" required>

    <template x-if="!periodo">
      <div class="mb-4 p-3 border rounded text-sm">Selecciona un <strong>Periodo evaluado</strong> en el Paso 1 para
        habilitar esta sección.</div>
    </template>

    <?php if($ejecucion): ?>
      <div class="overflow-x-auto border rounded-lg" x-show="periodo">
        <table class="min-w-full text-sm table-azul">
          <thead>
            <tr class="text-left">
              <th class="p-2 w-48 border-b">Departamento</th>
              <th class="p-2 w-48 border-b">Municipio</th>
              <th class="p-2 w-40 border-b">Mes</th>
              <th class="p-2 w-48 border-b">Población *</th>
            </tr>
          </thead>
          <tbody>
            <template x-for="(row, i) in filas" :key="i">
              <tr>
                <td class="p-2 border-b">
                  <input type="hidden" :value="row.departamento" readonly>
                  <dd class="field-label"><?php echo e($ejecucion['departamento']); ?></dd>
                </td>
                <td class="p-2 border-b">
                  <input type="hidden" :value="row.municipio" readonly>
                  <dd class="field-label"><?php echo e($ejecucion['municipio']); ?></dd>
                </td>
                <td class="p-2 border-b">
                  <input class="w-full input-azul p-2 rounded" style="color:steelblue;" :value="row.mes" readonly>
                  <input type="hidden" :name="`ejecucion[meses][${i}][mes]`" :value="row.mes">
                </td>
                <td class="p-2 border-b">
                  <input class="w-full input-azul p-2 rounded" style="color:steelblue;" type="number" min="0" step="1"
                    :name="`ejecucion[meses][${i}][poblacion]`" x-model="row.poblacion" required placeholder="0"
                    @input="window.dispatchEvent(new CustomEvent('sync-resumen'))">
                </td>
              </tr>
            </template>
          </tbody>
        </table>
      </div>
    <?php endif; ?>

    <div class="mt-6 border rounded-lg p-4" x-show="periodo">
      <h4 class="field-label">Análisis del periodo</h4>
      <textarea class="w-full input-azul p-2 rounded" rows="4" name="ejecucion[analisis]" required
        placeholder="Escribe un breve análisis de los datos: tendencias, variaciones, notas relevantes..."></textarea>
    </div>
  </div>

  <h2 class="sec-title" style="color:var(--c-blue-900)">MONITOREO Y EVALUACIÓN DE RIPS</h2>

  <!-- Matriz de ejecución -->
  <div class="mt-6 border rounded-lg p-4" x-data="{
    // ===== estado local =====
    valorUsuario: 0,

    // ===== acceso al padre (paso 3 superior) =====
    get parent(){
      const s = this.$root.closest('section[x-ref=\'step3\']'); // ajusta si tu x-ref cambia
      try { return s ? Alpine.$data(s) : {}; } catch(e){ return {}; }
    },
    get filas(){
      const d = this.parent;
      return (d && Array.isArray(d.filas)) ? d.filas : [];
    },

    // ===== helpers =====
    pct(row){
      const c = Number(row.act_contratadas||0);
      const e = Number(row.act_ejecutadas||0);
      if (c <= 0) return 0;
      const p = (e/c)*100;
      return Math.max(0, Math.min(100, p));
    },
    vc(row){
      const p = Number(row.poblacion||0);
      const vu = Number(this.valorUsuario||0);
      return p * vu;
    },
    valorEjecutado(row){
      return this.vc(row) * (this.pct(row)/100);
    },
    ajuste(row){
      const vc = this.vc(row);
      const ve = this.valorEjecutado(row);
      return Math.max(0, vc - ve);
    },
    subtotalVC(trimestre) {
  return this.filas
    .filter(r => this.periodoDeMes(r.mes) === trimestre)
    .reduce((a,r) => a + this.vc(r), 0);
},
subtotalVE(trimestre) {
  return this.filas
    .filter(r => this.periodoDeMes(r.mes) === trimestre)
    .reduce((a,r) => a + this.valorEjecutado(r), 0);
},
subtotalAjuste(trimestre) {
  return this.filas
    .filter(r => this.periodoDeMes(r.mes) === trimestre)
    .reduce((a,r) => a + this.ajuste(r), 0);
},


    periodoDeMes(m) {
  if (['Junio','Julio','Agosto'].includes(m)) return 'I';
  if (['Septiembre','Octubre','Noviembre'].includes(m)) return 'II';
  if (['Diciembre','Enero','Febrero'].includes(m)) return 'III';
  if (['Marzo','Abril','Mayo'].includes(m)) return 'IV';
  return '';
},

triDe(m){
  if (!m) return '';
  const k = String(m).normalize('NFD').replace(/[\u0300-\u036f]/g,'').toLowerCase().trim();
  if (['junio','julio','agosto'].includes(k)) return 'I';
  if (['septiembre','setiembre','octubre','noviembre'].includes(k)) return 'II';
  if (['diciembre','enero','febrero'].includes(k)) return 'III';
  if (['marzo','abril','mayo'].includes(k)) return 'IV';
  return '';
},
vcTrim(tri){
  return this.filas
    .filter(r => this.triDe(r.mes) === tri)
    .reduce((a,r) => a + this.vc(r), 0);
},
veTrim(tri){
  return this.filas
    .filter(r => this.triDe(r.mes) === tri)
    .reduce((a,r) => a + this.valorEjecutado(r), 0);
},
ajTrim(tri){
  return this.filas
    .filter(r => this.triDe(r.mes) === tri)
    .reduce((a,r) => a + this.ajuste(r), 0);
},
pctTrim(tri){
  const vc = this.vcTrim(tri), ve = this.veTrim(tri);
  return vc > 0 ? (ve / vc) * 100 : 0;
},
resumenTrimestres(){
  // Detecta automáticamente qué trimestres existen en filas y devuelve en orden I..IV
  const order = ['I','II','III','IV'];
  const present = new Set(this.filas.map(r => this.triDe(r.mes)).filter(Boolean));
  return order
    .filter(t => present.has(t))
    .map(t => ({
      tri: t,
      vc:  this.vcTrim(t),
      ve:  this.veTrim(t),
      aj:  this.ajTrim(t),
      pct: this.pctTrim(t),
    }));
},


    // (opcional) totales
    totalVC(){ return this.filas.reduce((a,r)=> a + this.vc(r), 0); },
    totalVE(){ return this.filas.reduce((a,r)=> a + this.valorEjecutado(r), 0); },
    totalAjustes(){ return this.filas.reduce((a,r)=> a + this.ajuste(r), 0); },

    // Por trimestre (I, II, III, IV)
vcTrim(per){ return this.filas.filter(r=> this.periodoDeMes(r.mes)===per).reduce((a,r)=> a + this.vc(r),0); },
veTrim(per){ return this.filas.filter(r=> this.periodoDeMes(r.mes)===per).reduce((a,r)=> a + this.valorEjecutado(r),0); },
ajustesTrimestre(per){ return this.filas.filter(r=> this.periodoDeMes(r.mes)===per).reduce((a,r)=> a + this.ajuste(r),0); },
pctEjecucionTotal(){ const vc=this.totalVC(), ve=this.totalVE(); return vc>0 ? (ve/vc)*100 : 0; },
pctEjecucionTrimestre(per){ const vc=this.vcTrim(per), ve=this.veTrim(per); return vc>0 ? (ve/vc)*100 : 0; },

// Empuja al store SOLO lo de la matriz
pushResumenMatriz(){
  const S = window.Alpine?.store('resumen'); if (!S) return;

  // Ajustes por trim
  S.matrizAjustesI   = this.ajustesTrimestre('I');
  S.matrizAjustesII  = this.ajustesTrimestre('II');
  S.matrizAjustesIII = this.ajustesTrimestre('III');
  S.matrizAjustesIV  = this.ajustesTrimestre('IV');
  S.matrizAjustesTotal = this.totalAjustes();

  // % por trim y total
  S.matrizPctI      = this.pctEjecucionTrimestre('I');
  S.matrizPctII     = this.pctEjecucionTrimestre('II');
  S.matrizPctIII    = this.pctEjecucionTrimestre('III');
  S.matrizPctIV     = this.pctEjecucionTrimestre('IV');
  S.matrizPctTotal  = this.pctEjecucionTotal();

  // VC / VE por trim y totales
  S.matrizVCI       = this.vcTrim('I');
  S.matrizVCII      = this.vcTrim('II');
  S.matrizVCIII     = this.vcTrim('III');
  S.matrizVCIV      = this.vcTrim('IV');
  S.matrizVCTotal   = this.totalVC();

  S.matrizVEI       = this.veTrim('I');
  S.matrizVEII      = this.veTrim('II');
  S.matrizVEIII     = this.veTrim('III');
  S.matrizVEIV      = this.veTrim('IV');
  S.matrizVETotal   = this.totalVE();

  window.dispatchEvent(new CustomEvent('resumen-updated'));
},
  }" x-init="
    const inp = document.getElementById('input_valor_per_capita');
    valorUsuario = inp && inp.value !== '' ? Number(inp.value) : 0;

    // 2) escuchar cambios del per-cápita (evento global)
    window.addEventListener('valor-per-capita', e => {
      valorUsuario = Number(e.detail || 0);
    });

    pushResumenMatriz()
  " x-effect="pushResumenMatriz()" @sync-resumen.window="pushResumenMatriz()">
    <h3 class="field-label">Matriz de evaluación de contrato</h3>

    <div class="overflow-x-auto border rounded-lg">
      <table class="min-w-full text-sm table-azul">
        <thead>
          <tr class="text-left">
            <th class="p-2 w-24 border-b">Periodo</th>
            <th class="p-2 w-32 border-b">Mes</th>
            <th class="p-2 w-40 border-b text-right">Valor x usuario</th>
            <th class="p-2 w-40 border-b text-right">Población del mes</th>
            <th class="p-2 w-32 border-b text-right">Act. contratadas</th>
            <th class="p-2 w-40 border-b text-right">Valor Contratado</th>
            <th class="p-2 w-32 border-b text-right">Act. ejecutadas</th>
            <th class="p-2 w-28 border-b text-right">% Ejecucion</th>
            <th class="p-2 w-40 border-b text-right">Valor Ejecutado</th>
            <th class="p-2 w-40 border-b text-right">Ajuste</th>
          </tr>
        </thead>
        <tbody>
          <template x-for="(row, i) in filas" :key="i">
            <tr>
              <td class="p-2 border-b" x-text="periodoDeMes(row.mes)"></td>
              <input type="hidden" :name="`matriz[items][${i}][periodo]`" :value="periodoDeMes(row.mes)">
              <td class="p-2 border-b" x-text="row.mes"></td>

              <!-- Valor x usuario -->
              <td class="p-2 border-b text-right">
                <span x-text="Number(valorUsuario||0).toFixed(2)"></span>
                <input type="hidden" :name="`matriz[items][${i}][valor_x_usuario]`"
                  :value="Number(valorUsuario||0).toFixed(2)">
              </td>

              <!-- Población del mes (viene de la tabla superior) -->
              <td class="p-2 border-b text-right">
                <span x-text="Number(row.poblacion||0)"></span>
                <input type="hidden" :name="`matriz[items][${i}][poblacion]`" :value="Number(row.poblacion||0)">
              </td>

              <!-- Contratadas / Ejecutadas (editables aquí si quieres) -->
              <td class="p-2 border-b text-right">
                <input type="number" min="0" step="1" class="field-control" x-model.number="row.act_contratadas">
              </td>

              <td class="p-2 border-b text-right">
                <span x-text="vc(row).toFixed(2)"></span>
                <input type="hidden" :name="`matriz[items][${i}][vc]`" :value="vc(row).toFixed(2)">
              </td>

              <td class="p-2 border-b text-right">
                <input type="number" min="0" step="1" class="field-control" x-model.number="row.act_ejecutadas">
              </td>

              <!-- % Ejec -->
              <td class="p-2 border-b text-right">
                <span x-text="pct(row).toFixed(1)"></span>%
                <input type="hidden" :name="`matriz[items][${i}][pct]`" :value="pct(row).toFixed(1)">
              </td>

              <!-- VC / VE / Ajuste -->

              <td class="p-2 border-b text-right">
                <span x-text="valorEjecutado(row).toFixed(2)"></span>
                <input type="hidden" :name="`matriz[items][${i}][ve]`" :value="valorEjecutado(row).toFixed(2)">
              </td>
              <td class="p-2 border-b text-right">
                <span x-text="ajuste(row).toFixed(2)"></span>
                <input type="hidden" :name="`matriz[items][${i}][ajuste]`" :value="ajuste(row).toFixed(2)">
              </td>
            </tr>
          </template>
        </tbody>

        <!-- (Opcional) totales -->
        <tfoot>
          <tr class="font-semibold">
            <!-- columnas 1 a 5 -->
            <td class="p-2 border-t text-right" colspan="5">Totales</td>

            <!-- Total VC en la columna 6 -->
            <td class="p-2 border-t text-right" x-text="totalVC().toFixed(2)"></td>

            <!-- columnas 7 y 8 vacías -->
            <td class="p-2 border-t"></td>
            <td class="p-2 border-t"></td>

            <!-- Total VE en la columna 9 -->
            <td class="p-2 border-t text-right" x-text="totalVE().toFixed(2)"></td>

            <!-- Total Ajuste en la columna 10 -->
            <td class="p-2 border-t text-right" x-text="totalAjustes().toFixed(2)"></td>
          </tr>
        </tfoot>

      </table>
    </div>

    <!-- ===== Resumen por Trimestre ===== -->
    <div class="mt-4 border rounded-lg p-4 bg-white/50">
      <h4 class="field-label mb-3">Resumen por trimestre</h4>

      <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3">
        <!-- Genera tarjetas solo para los trimestres presentes -->
        <template x-for="r in resumenTrimestres()" :key="r.tri">
          <div class="border rounded-lg p-3">
            <div class="font-semibold text-blue-900 mb-1">Trimestre <span x-text="r.tri"></span></div>
            <div class="flex justify-between text-sm">
              <span>Val.Con</span>
              <span>$ <span x-text="r.vc.toFixed(2)"></span></span>
            </div>
            <div class="flex justify-between text-sm">
              <span>Val.Ejec</span>
              <span>$ <span x-text="r.ve.toFixed(2)"></span></span>
            </div>
            <div class="flex justify-between text-sm">
              <span>Ajuste</span>
              <span>$ <span x-text="r.aj.toFixed(2)"></span></span>
            </div>
            <div class="flex justify-between text-sm font-medium border-t pt-1 mt-1">
              <span>% Ejecución</span>
              <span><span x-text="r.pct.toFixed(1)"></span>%</span>
            </div>
          </div>
        </template>
      </div>
    </div>

    <!-- ===== Conclusiones de la matriz ===== -->
    <div class="mt-6 border rounded-lg p-4">
      <h3 class="field-label">Conclusiones de la matriz *</h3>
      <textarea class="w-full border rounded p-2" rows="4" name="matriz[conclusiones]"
        placeholder="Resume brevemente los hallazgos: tendencias, brechas, causas, recomendaciones..."
        required></textarea>
    </div>
  </div>

  <!-- ===== Anexos (evidencias en imágenes) ===== -->
  <div class="mt-6 border rounded-lg p-4" x-data="{
       files: [],
       previews: [],
       error: null,
       MAX: 10,
       MAX_MB: 5,
       accept: ['image/jpeg','image/png','image/webp'],

       onChange(e) {
         this.error = null;
         const incoming = Array.from(e.target.files || []);
         // Validaciones básicas
         for (const f of incoming) {
           if (!this.accept.includes(f.type)) {
             this.error = 'Formato no permitido. Usa JPG, PNG o WebP.';
             return this.resetInput();
           }
           if (f.size > this.MAX_MB * 1024 * 1024) {
             this.error = `Cada imagen debe pesar ≤ ${this.MAX_MB} MB.`;
             return this.resetInput();
           }
         }
         // Límite de cantidad
         if (this.files.length + incoming.length > this.MAX) {
           this.error = `Máximo ${this.MAX} imágenes.`;
           return this.resetInput();
         }
         // Agregar y generar previews
         for (const f of incoming) {
           this.files.push(f);
           this.previews.push(URL.createObjectURL(f));
         }
       },
       remove(i) {
         if (this.previews[i]) URL.revokeObjectURL(this.previews[i]);
         this.previews.splice(i,1);
         this.files.splice(i,1);
         // Sincroniza el input real
         const dt = new DataTransfer();
         this.files.forEach(f => dt.items.add(f));
         $refs.input.files = dt.files;
       },
       clearAll() {
         this.previews.forEach(p => URL.revokeObjectURL(p));
         this.previews = [];
         this.files = [];
         this.resetInput();
       },
       resetInput() { if ($refs.input) $refs.input.value = ''; }
        }">

    <h3 class="field-label">Anexos (imágenes de evidencia)</h3>

    <input x-ref="input" type="file" name="matriz[anexos][]" accept="image/*" multiple
      class="block w-full border rounded p-2" @change="onChange">

    <p class="text-xs text-gray-500 mt-2">
      Formatos permitidos: JPG, PNG, WebP. Máx <?php echo e(5); ?> MB c/u, <?php echo e(10); ?> imágenes en total.
    </p>
    <template x-if="error">
      <p class="mt-2 text-sm text-red-600" x-text="error"></p>
    </template>

    <!-- Previews -->
    <div class="mt-3 grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3" x-show="previews.length">
      <template x-for="(src, i) in previews" :key="i">
        <div class="relative">
          <img :src="src" alt="Preview" class="h-32 w-full object-cover rounded border" />
          <button type="button" class="absolute -top-2 -right-2 bg-white border rounded-full w-6 h-6 text-sm"
            title="Quitar" @click="remove(i)">✕</button>
          <div class="mt-1 text-[11px] text-gray-600 truncate" x-text="files[i]?.name"></div>
        </div>
      </template>
    </div>

    <div class="mt-3 flex gap-2" x-show="previews.length">
      <button type="button" class="px-3 py-1 border rounded" @click="clearAll()">Quitar todas</button>
      <button type="button" class="px-3 py-1 border rounded" @click="$refs.input.click()">Agregar más</button>
    </div>
  </div>




  <!-- Checklist verificación (Sección 3) -->
  <?php
    $verifPlantilla = [
      ['item' => 'Entrega mes a mes de RIPS durante cada radicación en el periodo evaluado.', 'ponderado' => 8],
      ['item' => 'Reportes mensuales de Indicadores de monitoreo de la calidad en salud (Res. 256/2016).', 'ponderado' => 8],
      ['item' => 'Reporte oportuno de novedades y soportes contractuales.', 'ponderado' => 8],
      ['item' => 'Cumplimiento de acuerdos de niveles de servicio.', 'ponderado' => 8],
      ['item' => 'Otros compromisos de ejecución documental y técnica.', 'ponderado' => 8],
    ];
  ?>

  <div class="mt-6 border rounded-lg p-4" x-data="{
    rows: <?php echo \Illuminate\Support\Js::from($verifPlantilla)->toHtml() ?>,
    total(){ return (this.rows||[]).reduce((a,r)=> a + Number(r.ponderado||0), 0); },
    obtenido(){ return (this.rows||[]).reduce((a,r)=> a + (String(r.cumple||'').toUpperCase()==='SI' ? Number(r.ponderado||0) : 0), 0); },
    porcentaje(){ const t=this.total(); return t>0 ? (this.obtenido()/t)*100 : 0; },
    pushResumen(){
      const S = window.Alpine?.store('resumen'); if (!S) return;
      S.ejecucion         = this.porcentaje();
      S.ejecucionTotal    = this.total();
      S.ejecucionObtenido = this.obtenido();
      
      window.dispatchEvent(new CustomEvent('resumen-updated'));
    }

    
  }" x-init="pushResumen()" x-effect="pushResumen()" @sync-resumen.window="pushResumen()">
    <div class="overflow-x-auto border rounded-lg">
      <table class="min-w-full text-sm table-azul">
        <thead>
          <tr class="text-left">
            <th class="p-2 w-12 border-b">No.</th>
            <th class="p-2 border-b">Ítem</th>
            <th class="p-2 w-28 border-b text-center">Ponderado</th>
            <th class="p-2 w-40 border-b text-center">Cumple</th>
            <th class="p-2 w-[40%] border-b">Observaciones</th>
          </tr>
        </thead>
        <tbody>
          <template x-for="(row, i) in rows" :key="i">
            <tr class="align-top">
              <td class="p-2 border-b text-center" x-text="i+1"></td>
              <td class="p-2 border-b">
                <div class="whitespace-pre-line" x-text="row.item"></div>
                <input type="hidden" :name="`verificacion3[items][${i}][item]`" :value="row.item">
              </td>
              <td class="p-2 border-b text-center">
                <span x-text="row.ponderado"></span>
                <input type="hidden" :name="`verificacion3[items][${i}][ponderado]`" :value="row.ponderado">
              </td>
              <td class="p-2 border-b">
                <div class="flex items-center justify-center gap-4">
                  <label class="inline-flex items-center gap-1">
                    <input type="radio" :name="`verificacion3[items][${i}][cumple]`" value="SI" x-model="row.cumple"
                      required>
                    <span>SI</span>
                  </label>
                  <label class="inline-flex items-center gap-1">
                    <input type="radio" :name="`verificacion3[items][${i}][cumple]`" value="NO" x-model="row.cumple"
                      required>
                    <span>NO</span>
                  </label>
                </div>
              </td>
              <td class="p-2 border-b">
                <textarea class="w-full border rounded p-2" rows="2" :name="`verificacion3[items][${i}][observaciones]`"
                  x-model="row.observaciones" :required="row.cumple==='NO'"
                  :class="row.cumple==='NO' && !row.observaciones ? 'ring-2 ring-red-400' : ''"
                  placeholder="Anote hallazgos/soportes si no cumple..."></textarea>
              </td>
            </tr>
          </template>
        </tbody>
        <tfoot>
          <tr>
            <td class="p-2 border-t font-semibold text-right" colspan="2">Totales</td>
            <td class="p-2 border-t font-semibold text-center" x-text="total()"></td>
            <td class="p-2 border-t font-semibold text-center" colspan="2">
              Obtenido: <span x-text="obtenido()"></span> / <span x-text="total()"></span>
              — <strong x-text="porcentaje().toFixed(1) + '%' "></strong>
            </td>
          </tr>
        </tfoot>
      </table>
    </div>

    <input type="hidden" name="verificacion3[porcentaje]" :value="porcentaje().toFixed(1)">
    <input type="hidden" name="verificacion3[puntos_obtenidos]" :value="obtenido()">
    <input type="hidden" name="verificacion3[puntos_totales]" :value="total()">
  </div>

</section><?php /**PATH C:\xampp\htdocs\Auditoria-app\resources\views/formularios/sections/_ejecucion.blade.php ENDPATH**/ ?>