:root{--op3-bg:#f4f7fb;--op3-card:#fff;--op3-text:#172033;--op3-muted:#64748b;--op3-blue:#2563eb;--op3-blue-dark:#1e3a8a;--op3-line:#e2e8f0;--op3-green:#16a34a;--op3-amber:#d97706;--op3-red:#dc2626;--op3-shadow:0 12px 32px rgba(15,23,42,.07);--op3-radius:20px}
*{box-sizing:border-box}html{background:var(--op3-bg)}body.op3-body{margin:0;background:var(--op3-bg);color:var(--op3-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}.op3-icon{width:21px;height:21px;display:block;flex:0 0 auto}.op3-shell{display:flex;min-height:100vh}.op3-sidebar{position:sticky;top:0;width:264px;height:100vh;padding:20px 16px;display:flex;flex-direction:column;background:#fff;border-right:1px solid var(--op3-line);z-index:30}.op3-brand{display:flex;align-items:center;gap:12px;padding:4px 8px 20px;text-decoration:none;color:var(--op3-text)}.op3-brand__mark{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,var(--op3-blue),var(--op3-blue-dark));color:#fff;font-size:20px;font-weight:900;box-shadow:0 10px 24px rgba(37,99,235,.25)}.op3-brand strong,.op3-brand small{display:block}.op3-brand strong{font-size:17px;letter-spacing:-.02em}.op3-brand small{margin-top:2px;color:var(--op3-muted);font-size:12px;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.op3-menu{display:grid;gap:5px;overflow-y:auto;padding-right:2px}.op3-menu__label{margin:15px 10px 5px;color:#94a3b8;font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.op3-menu__item{position:relative;display:flex;align-items:center;gap:12px;min-height:46px;padding:11px 13px;border-radius:14px;color:#475569;text-decoration:none;font-size:14px;font-weight:750;transition:background .16s,color .16s,transform .16s}.op3-menu__item:hover{background:#f1f5f9;color:var(--op3-blue);transform:translateX(2px)}.op3-menu__item.is-active{background:#eaf2ff;color:#1d4ed8}.op3-menu__item.is-active:before{content:"";position:absolute;left:-16px;width:4px;height:25px;border-radius:0 6px 6px 0;background:var(--op3-blue)}.op3-user{display:grid;grid-template-columns:38px minmax(0,1fr) 28px;align-items:center;gap:10px;margin-top:auto;padding:14px 8px 2px;border-top:1px solid var(--op3-line)}.op3-avatar{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:#dbeafe;color:#1d4ed8;font-weight:900}.op3-user strong,.op3-user small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.op3-user strong{font-size:13px}.op3-user small{margin-top:2px;color:var(--op3-muted);font-size:10px}.op3-user a{color:#64748b;padding:4px}.op3-main{width:calc(100% - 264px);max-width:1440px;margin:0 auto;padding:26px 30px 80px;min-width:0}.op3-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.op3-eyebrow{display:none;color:var(--op3-blue);font-size:12px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.op3-topbar h1{margin:0;color:var(--op3-text);font-size:28px;line-height:1.15;letter-spacing:-.035em}.op3-topbar p{margin:7px 0 0;color:var(--op3-muted);font-size:14px}.op3-topbar__actions,.op3-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.op3-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 15px;border:1px solid var(--op3-blue);border-radius:13px;background:var(--op3-blue);color:#fff;text-decoration:none;font-size:13px;font-weight:800;cursor:pointer}.op3-btn .op3-icon{width:18px;height:18px}.op3-btn--secondary{border-color:var(--op3-line);background:#fff;color:#334155}.op3-btn:hover{filter:brightness(.97)}.op3-mobilebar{display:none}.op3-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.op3-kpi{position:relative;overflow:hidden;min-height:142px;padding:18px;background:#fff;border:1px solid var(--op3-line);border-radius:var(--op3-radius);box-shadow:var(--op3-shadow);text-decoration:none;color:inherit}.op3-kpi__top{display:flex;align-items:center;justify-content:space-between;gap:10px}.op3-kpi__icon{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:#eff6ff;color:var(--op3-blue)}.op3-kpi__icon.is-green{background:#ecfdf5;color:var(--op3-green)}.op3-kpi__icon.is-amber{background:#fff7ed;color:var(--op3-amber)}.op3-kpi__icon.is-red{background:#fef2f2;color:var(--op3-red)}.op3-kpi small{color:var(--op3-muted);font-size:12px;font-weight:750}.op3-kpi strong{display:block;margin-top:15px;font-size:25px;line-height:1.1;letter-spacing:-.03em}.op3-kpi span{display:block;margin-top:7px;color:var(--op3-muted);font-size:12px}.op3-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:16px;margin-bottom:16px}.op3-panel,.card{background:#fff;border:1px solid var(--op3-line);border-radius:var(--op3-radius);box-shadow:var(--op3-shadow);padding:20px}.op3-panel h2,.op3-panel h3,.card h2,.card h3{margin:0 0 8px;color:var(--op3-text);letter-spacing:-.02em}.op3-panel>p{margin:0;color:var(--op3-muted);font-size:14px}.op3-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-top:17px}.op3-action{display:grid;grid-template-columns:42px minmax(0,1fr) 20px;align-items:center;gap:12px;min-height:76px;padding:13px;border:1px solid var(--op3-line);border-radius:17px;background:#fff;color:inherit;text-decoration:none;transition:border-color .16s,box-shadow .16s,transform .16s}.op3-action:hover{border-color:#bfdbfe;box-shadow:0 10px 24px rgba(37,99,235,.1);transform:translateY(-1px)}.op3-action__icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:#eff6ff;color:var(--op3-blue)}.op3-action strong,.op3-action small{display:block}.op3-action strong{font-size:14px}.op3-action small{margin-top:3px;color:var(--op3-muted);font-size:11px}.op3-action>.op3-icon{width:17px;color:#94a3b8}.op3-list{display:grid;margin-top:12px}.op3-listitem{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px 0;border-bottom:1px solid #eef2f7}.op3-listitem:last-child{border-bottom:0}.op3-dot{width:9px;height:9px;border-radius:50%;background:var(--op3-blue);box-shadow:0 0 0 4px #dbeafe}.op3-dot.is-green{background:var(--op3-green);box-shadow:0 0 0 4px #dcfce7}.op3-dot.is-amber{background:var(--op3-amber);box-shadow:0 0 0 4px #ffedd5}.op3-dot.is-red{background:var(--op3-red);box-shadow:0 0 0 4px #fee2e2}.op3-listitem strong,.op3-listitem small{display:block}.op3-listitem strong{font-size:13px}.op3-listitem small{margin-top:3px;color:var(--op3-muted);font-size:11px}.op3-listitem>a{color:var(--op3-blue);font-size:12px;font-weight:800;text-decoration:none}.op3-section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.op3-section-head h3{margin:0}.op3-section-head a{color:var(--op3-blue);font-size:12px;font-weight:800;text-decoration:none}.op3-quickgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.op3-quick{display:flex;align-items:center;gap:10px;min-height:58px;padding:12px;border:1px solid var(--op3-line);border-radius:15px;color:#334155;text-decoration:none;font-size:13px;font-weight:800}.op3-quick .op3-icon{color:var(--op3-blue)}
/* Compatibilidad con módulos existentes */
.op3-main .op-page-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.op3-main .op-toolbar{display:flex;gap:10px;flex-wrap:wrap}.op3-main .formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:13px}.op3-main .formgrid p{margin:0}.op3-main label{display:block;margin-bottom:6px;color:#334155;font-size:13px;font-weight:800}.op3-main input,.op3-main select,.op3-main textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#0f172a;font:inherit}.op3-main textarea{min-height:96px}.op3-main input:focus,.op3-main select:focus,.op3-main textarea:focus{border-color:var(--op3-blue);outline:3px solid rgba(37,99,235,.13)}.op3-main .btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:9px 14px;border:1px solid var(--op3-blue);border-radius:12px;background:var(--op3-blue);color:#fff;text-decoration:none;font-weight:800;cursor:pointer}.op3-main .btn.secondary{border-color:var(--op3-line);background:#fff;color:#334155}.op3-main .btn.danger{border-color:var(--op3-red);background:#fff;color:var(--op3-red)}.op3-main .badge{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:850}.op3-main .badge.good{background:#dcfce7;color:#166534}.op3-main .badge.bad{background:#fee2e2;color:#991b1b}.op3-main .muted{color:var(--op3-muted)}.op3-table-scroll{max-width:100%;overflow-x:auto;border:1px solid var(--op3-line);border-radius:15px;-webkit-overflow-scrolling:touch}.op3-main table.table{width:100%;margin:0;border-collapse:collapse;box-shadow:none;border-radius:0}.op3-main .table th{padding:12px;background:#f8fafc;color:#475569;text-align:left;font-size:12px;white-space:nowrap}.op3-main .table td{padding:12px;border-top:1px solid #eef2f7;color:#334155;font-size:13px;vertical-align:middle}.op3-main .table th a{color:inherit;text-decoration:none}.op3-main .actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.op3-main .op-modulegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.op3-main .op-modulecard{display:flex;flex-direction:column;gap:8px;min-height:120px;padding:15px;border:1px solid var(--op3-line);border-radius:16px;background:#fff;color:inherit;text-decoration:none}.op3-main .op-modulecard__icon{width:40px;height:40px;display:grid;place-items:center;border-radius:13px;background:#eff6ff;color:var(--op3-blue)}
@media(max-width:1050px){.op3-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.op3-grid{grid-template-columns:1fr}.op3-main{padding-left:22px;padding-right:22px}}
@media(max-width:860px){.op3-sidebar{display:none}.op3-main{width:100%;padding:18px 16px calc(96px + env(safe-area-inset-bottom))}.op3-topbar{margin:-18px -16px 18px;padding:20px 18px 22px;border-radius:0 0 24px 24px;background:linear-gradient(145deg,#2563eb,#1e40af);color:#fff}.op3-eyebrow{display:block;color:#bfdbfe}.op3-topbar h1,.op3-topbar p{color:#fff}.op3-topbar h1{margin-top:4px;font-size:24px}.op3-topbar__actions{display:none}.op3-mobilebar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:grid;grid-template-columns:repeat(5,1fr);height:76px;padding:7px 8px calc(7px + env(safe-area-inset-bottom));border-top:1px solid var(--op3-line);background:rgba(255,255,255,.96);backdrop-filter:blur(12px);box-shadow:0 -10px 28px rgba(15,23,42,.08)}.op3-mobilebar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:13px;color:#64748b;text-decoration:none}.op3-mobilebar a.is-active{background:#eaf2ff;color:var(--op3-blue)}.op3-mobilebar .op3-icon{width:20px;height:20px}.op3-mobilebar small{font-size:10px;font-weight:800}.op3-main .formgrid{grid-template-columns:1fr}.op3-main input,.op3-main select,.op3-main textarea{font-size:16px}}
@media(max-width:600px){.op3-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.op3-kpi{min-height:125px;padding:14px}.op3-kpi strong{font-size:20px}.op3-grid{gap:12px}.op3-panel,.card{padding:15px;border-radius:17px}.op3-actions{grid-template-columns:1fr}.op3-quickgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.op3-main .op-toolbar .btn,.op3-main .op-toolbar a.btn{flex:1 1 130px}.op3-main .table{min-width:680px}.op3-main .op-modulegrid{grid-template-columns:1fr}.op3-mobilebar{height:72px}}
@media print{.no-print,.op3-sidebar,.op3-mobilebar,.op3-topbar{display:none!important}.op3-main{width:100%;max-width:none;padding:0}.op3-panel,.card{box-shadow:none;border:1px solid #ddd}}
.op3-create-launch{display:flex;justify-content:flex-end;margin:0 0 16px}.op3-create-toggle{min-width:180px;justify-content:center}.op3-create-panel{scroll-margin-top:18px}.op3-create-panel[hidden]{display:none!important}
@media(max-width:600px){.op3-create-launch,.op3-create-toggle{width:100%}}
.op-actions-inline{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}.op-actions-inline form{display:inline-flex;margin:0}.op-actions-inline .btn,.op-actions-inline .badge{margin:0}.op-check{display:flex!important;align-items:center;gap:9px;min-height:44px}.op-check input{width:20px!important;height:20px!important;margin:0!important}.table td:last-child .badge+.badge,.table td:last-child .btn+.btn{margin-left:0}
@media(max-width:600px){.op-actions-inline{flex-wrap:wrap;white-space:normal}}
.op3-main .table.op-component-detail tbody td{border-top:0!important;border-bottom:0!important}
.op3-main .table .op-row-actions{display:inline-flex!important;align-items:center;gap:8px;flex-wrap:nowrap!important;white-space:nowrap;margin:0}
.op3-main .table .op-row-actions .btn{flex:0 0 auto;margin:0;min-width:86px}
.op3-main .table .op-group-row td{padding:10px 12px;border-top:1px solid #bfdbfe;border-bottom:0;background:#eff6ff;color:#1e3a8a;font-size:12px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}


/* MYPYME360_IDENTIDAD_V52 */
.op3-brand{display:block;padding:3px 8px 20px}
.op3-brand__identity{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:8px}
.op3-brand__company{display:block!important;width:100%;overflow:hidden;color:var(--op3-text);font-size:17px!important;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
.op3-brand__logo{display:block;width:170px;max-width:100%;height:auto;object-fit:contain}

/* MYPYME360_LOGO_MOVIL_V521 */
.op3-mobile-brand-logo{display:none}
@media(max-width:860px){
  .op3-topbar{position:relative;padding-right:160px;min-height:118px}
  .op3-topbar>div:first-child{min-width:0}
  .op3-mobile-brand-logo{position:absolute;display:block;top:18px;right:16px;width:132px;max-height:72px;padding:8px 10px;border-radius:15px;background:rgba(255,255,255,.96);box-shadow:0 10px 26px rgba(15,23,42,.18);object-fit:contain}
}
@media(max-width:440px){
  .op3-topbar{padding-right:132px}
  .op3-mobile-brand-logo{right:12px;width:112px;padding:7px 8px}
}

/* MYPYME360_LOGO_MOVIL_TERCIO_V522 */
@media(max-width:860px){
  .op3-topbar{padding-right:70px}
  .op3-mobile-brand-logo{top:18px;right:16px;width:44px;height:auto;max-height:none;padding:3px;border-radius:8px;object-fit:contain}
}
@media(max-width:440px){
  .op3-topbar{padding-right:62px}
  .op3-mobile-brand-logo{right:12px;width:37px;height:auto;padding:2px}
}
/* ELABORAPRO_VISUAL_V4_START
   Identidad visual global ElaboraPro para layout V3.
   Para probar otro color de botones principales, cambiar SOLO:
   --ep-action y --ep-action-hover.
*/
:root{
  --ep-bg:#F7F4EE;
  --ep-surface:#FFFDF9;
  --ep-ink:#07162F;
  --ep-muted:#6680AD;
  --ep-blue:#1769F5;
  --ep-sage:#BFD0B7;
  --ep-sage-soft:#EEF3EB;
  --ep-terracotta:#EFA58D;
  --ep-terracotta-soft:#FCEBE5;
  --ep-yellow:#F7D58A;
  --ep-yellow-soft:#FFF5D9;
  --ep-border:#DCE3EA;
  --ep-danger:#DC2626;
  --ep-success:#2F7D4A;

  /* COLOR INTERCAMBIABLE DE ACCIONES PRINCIPALES */
  --ep-action:#1769F5;
  --ep-action-hover:#0D57D7;
  --ep-action-text:#FFFFFF;

  --op3-bg:var(--ep-bg);
  --op3-card:var(--ep-surface);
  --op3-text:var(--ep-ink);
  --op3-muted:var(--ep-muted);
  --op3-blue:var(--ep-action);
  --op3-blue-dark:var(--ep-action-hover);
  --op3-line:var(--ep-border);
  --op3-green:var(--ep-success);
  --op3-amber:#B86B28;
  --op3-red:var(--ep-danger);
  --op3-shadow:0 10px 28px rgba(7,22,47,.055);
}

html,
body.op3-body{background:var(--ep-bg);color:var(--ep-ink)}

.op3-sidebar{
  background:var(--ep-surface);
  border-right-color:var(--ep-border);
}
.op3-brand__company{color:var(--ep-ink)}
.op3-menu__label{color:#8A98A8}
.op3-menu__item{color:#42516A}
.op3-menu__item:hover{
  background:var(--ep-sage-soft);
  color:var(--ep-ink);
}
.op3-menu__item.is-active{
  background:var(--ep-yellow-soft);
  color:var(--ep-ink);
}
.op3-menu__item.is-active:before{background:var(--ep-terracotta)}
.op3-avatar{
  background:var(--ep-sage-soft);
  color:#355D42;
}
.op3-user{border-top-color:var(--ep-border)}
.op3-user a{color:var(--ep-muted)}

.op3-eyebrow{color:var(--ep-muted)}
.op3-topbar h1{color:var(--ep-ink)}
.op3-topbar p{color:var(--ep-muted)}

.op3-btn,
.op3-main .btn{
  border-color:var(--ep-action);
  background:var(--ep-action);
  color:var(--ep-action-text);
  box-shadow:none;
}
.op3-btn:hover,
.op3-main .btn:hover{
  background:var(--ep-action-hover);
  border-color:var(--ep-action-hover);
  filter:none;
}
.op3-btn--secondary,
.op3-main .btn.secondary{
  border-color:var(--ep-border);
  background:var(--ep-surface);
  color:var(--ep-ink);
}
.op3-btn--secondary:hover,
.op3-main .btn.secondary:hover{
  border-color:#C9D4DF;
  background:#F4F0E8;
  color:var(--ep-ink);
}
.op3-main .btn.danger{
  border-color:var(--ep-danger);
  background:var(--ep-surface);
  color:var(--ep-danger);
}
.op3-main .btn.danger:hover{
  background:#FEF2F2;
  border-color:var(--ep-danger);
  color:#991B1B;
}

.op3-kpi,
.op3-panel,
.op3-main .card,
.op3-action,
.op3-main .op-modulecard,
.op3-quick{
  background:var(--ep-surface);
  border-color:var(--ep-border);
}
.op3-kpi__icon,
.op3-action__icon,
.op3-main .op-modulecard__icon{
  background:var(--ep-sage-soft);
  color:#355D42;
}
.op3-kpi__icon.is-green{background:var(--ep-sage-soft);color:#355D42}
.op3-kpi__icon.is-amber{background:var(--ep-yellow-soft);color:#8A5B00}
.op3-kpi__icon.is-red{background:#FEF2F2;color:var(--ep-danger)}

.op3-action:hover,
.op3-main .op-modulecard:hover{
  border-color:#D9B8A9;
  box-shadow:0 10px 24px rgba(7,22,47,.07);
}
.op3-quick{color:var(--ep-ink)}
.op3-quick .op3-icon{color:#A35E49}

.op3-dot{background:var(--ep-action);box-shadow:0 0 0 4px rgba(23,105,245,.11)}
.op3-dot.is-green{background:var(--ep-success);box-shadow:0 0 0 4px rgba(191,208,183,.55)}
.op3-dot.is-amber{background:#C88727;box-shadow:0 0 0 4px rgba(247,213,138,.55)}
.op3-dot.is-red{background:var(--ep-danger);box-shadow:0 0 0 4px #FEE2E2}
.op3-listitem{border-bottom-color:#E9E5DE}
.op3-listitem>a,
.op3-section-head a{color:var(--ep-action)}

.op3-main label{color:#34445A}
.op3-main input,
.op3-main select,
.op3-main textarea{
  border-color:#CBD5DF;
  background:var(--ep-surface);
  color:var(--ep-ink);
}
.op3-main input:focus,
.op3-main select:focus,
.op3-main textarea:focus{
  border-color:var(--ep-action);
  outline:3px solid color-mix(in srgb,var(--ep-action) 13%,transparent);
}

.op3-table-scroll{border-color:var(--ep-border)}
.op3-main .table th{
  background:#F1EEE7;
  color:#48566A;
}
.op3-main .table td{
  border-top-color:#ECE8E0;
  color:#34445A;
  background:var(--ep-surface);
}
.op3-main .table .op-group-row td{
  border-top-color:#E7CDBF;
  background:var(--ep-terracotta-soft);
  color:#7A4637;
}

.op3-main .badge.good{
  background:var(--ep-sage-soft);
  color:#285C3A;
}
.op3-main .badge.bad{
  background:#FEE2E2;
  color:#991B1B;
}

@media(max-width:860px){
  .op3-topbar{
    background:linear-gradient(135deg,#F4E7DD 0%,#F8F1E4 55%,#E8EFE4 100%);
    color:var(--ep-ink);
    border-bottom:1px solid var(--ep-border);
    box-shadow:0 8px 24px rgba(7,22,47,.055);
  }
  .op3-eyebrow{color:#7B675C}
  .op3-topbar h1{color:var(--ep-ink)}
  .op3-topbar p{color:#52657E}
  .op3-mobile-brand-logo{
    background:rgba(255,253,249,.96);
    box-shadow:0 8px 20px rgba(7,22,47,.10);
  }
  .op3-mobilebar{
    border-top-color:var(--ep-border);
    background:rgba(255,253,249,.97);
    box-shadow:0 -8px 24px rgba(7,22,47,.07);
  }
  .op3-mobilebar a{color:#68768A}
  .op3-mobilebar a.is-active{
    background:var(--ep-yellow-soft);
    color:var(--ep-ink);
  }
}

/* ELABORAPRO_VISUAL_V4_END */

/* ELABORAPRO_VISUAL_V4_1_START
   Jerarquía global de acciones:
   - Azul sólido: guardar/crear/confirmar/registrar y acciones primarias explícitas.
   - Acciones auxiliares: superficie cálida + borde gris.
   - Acciones de fila: rectangulares, no píldora.
   - Estados informativos/no configurados: gris.
   - Checkbox/radio: verde grisáceo, no azul.
*/

/* Controles de selección */
.op3-main input[type="checkbox"],
.op3-main input[type="radio"]{
  width:auto;
  min-height:0;
  accent-color:#7F8B83;
}

/* Botón secundario universal */
.op3-main .btn.secondary,
.op3-btn--secondary{
  background:var(--ep-surface);
  border:1px solid var(--ep-border);
  color:var(--ep-ink);
  box-shadow:none;
}
.op3-main .btn.secondary:hover,
.op3-btn--secondary:hover{
  background:#F2EFE8;
  border-color:#C8D0D8;
  color:var(--ep-ink);
}

/* Acciones auxiliares frecuentes: no deben competir con Guardar/Crear */
.op3-main a.btn[href*="export"],
.op3-main a.btn[href*="excel"],
.op3-main a.btn[href*="imprim"],
.op3-main button[name*="buscar" i],
.op3-main input[type="submit"][name*="buscar" i],
.op3-main button[value*="buscar" i],
.op3-main input[type="submit"][value*="buscar" i]{
  background:var(--ep-surface);
  border:1px solid var(--ep-border);
  color:var(--ep-ink);
  box-shadow:none;
}
.op3-main a.btn[href*="export"]:hover,
.op3-main a.btn[href*="excel"]:hover,
.op3-main a.btn[href*="imprim"]:hover,
.op3-main button[name*="buscar" i]:hover,
.op3-main input[type="submit"][name*="buscar" i]:hover,
.op3-main button[value*="buscar" i]:hover,
.op3-main input[type="submit"][value*="buscar" i]:hover{
  background:#F2EFE8;
  border-color:#C8D0D8;
  color:var(--ep-ink);
}

/* Acciones de tabla: forma de botón secundario, no badge/píldora */
.op3-main .table .op-row-actions .btn,
.op3-main .table td:last-child .btn{
  min-width:0;
  min-height:34px;
  padding:7px 11px;
  border-radius:10px;
  background:var(--ep-surface);
  border:1px solid var(--ep-border);
  color:var(--ep-ink);
  box-shadow:none;
  font-size:12px;
  line-height:1.1;
}
.op3-main .table .op-row-actions .btn:hover,
.op3-main .table td:last-child .btn:hover{
  background:#F2EFE8;
  border-color:#C8D0D8;
  color:var(--ep-ink);
}

/* Desactivar no se presenta como error destructivo */
.op3-main .table .op-row-actions .btn.danger,
.op3-main .table td:last-child .btn.danger{
  background:var(--ep-surface);
  border-color:var(--ep-border);
  color:#566273;
}
.op3-main .table .op-row-actions .btn.danger:hover,
.op3-main .table td:last-child .btn.danger:hover{
  background:#F2EFE8;
  border-color:#C8D0D8;
  color:var(--ep-ink);
}

/* Estados: píldoras reservadas para información, no para acciones */
.op3-main .badge{
  border-radius:999px;
}
.op3-main .badge.good{
  background:var(--ep-sage-soft);
  color:#285C3A;
}
/* Estado neutro / pendiente / sin configurar */
.op3-main .badge:not(.good):not(.bad):not(.ok){
  background:#ECEFF1;
  color:#566273;
}
/* En V4.1 los BAD informativos se neutralizan visualmente.
   Los errores de formulario y botones de eliminación real mantienen rojo. */
.op3-main .badge.bad{
  background:#ECEFF1;
  color:#566273;
}

/* Botones dentro de celdas nunca heredan apariencia de píldora */
.op3-main .table td .btn{
  border-radius:10px;
}

/* ELABORAPRO_VISUAL_V4_1_END */

/* ELABORAPRO_VISUAL_V4_2_START
   Semántica global:
   Primaria = azul
   Edición/activación = verde
   Desactivar/eliminar = rojo
   Herramientas/búsqueda = neutro
   Badges = estados, no acciones
*/

:root{
  --ep-action-edit:#2F7D4A;
  --ep-action-edit-hover:#25663C;
  --ep-action-danger:#C94B45;
  --ep-action-danger-hover:#AD3E39;
}

/* Acciones semánticas: botones, nunca badges */
.op3-main .action-edit,
.op3-main .action-activate{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:7px 12px;
  border:1px solid var(--ep-action-edit);
  border-radius:10px;
  background:var(--ep-action-edit);
  color:#fff;
  text-decoration:none;
  font-size:12px;
  font-weight:800;
  line-height:1.1;
  cursor:pointer;
  box-shadow:none;
}
.op3-main .action-edit:hover,
.op3-main .action-activate:hover{
  background:var(--ep-action-edit-hover);
  border-color:var(--ep-action-edit-hover);
  color:#fff;
}

.op3-main .action-danger,
.op3-main .action-deactivate,
.op3-main .action-delete{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:7px 12px;
  border:1px solid var(--ep-action-danger);
  border-radius:10px;
  background:var(--ep-action-danger);
  color:#fff;
  text-decoration:none;
  font-size:12px;
  font-weight:800;
  line-height:1.1;
  cursor:pointer;
  box-shadow:none;
}
.op3-main .action-danger:hover,
.op3-main .action-deactivate:hover,
.op3-main .action-delete:hover{
  background:var(--ep-action-danger-hover);
  border-color:var(--ep-action-danger-hover);
  color:#fff;
}

/* Las reglas genéricas V4.1 de la última columna NO deben neutralizar
   las nuevas acciones semánticas. */
.op3-main .table td:last-child .action-edit,
.op3-main .table td:last-child .action-activate{
  background:var(--ep-action-edit);
  border-color:var(--ep-action-edit);
  color:#fff;
  border-radius:10px;
}
.op3-main .table td:last-child .action-danger,
.op3-main .table td:last-child .action-deactivate,
.op3-main .table td:last-child .action-delete{
  background:var(--ep-action-danger);
  border-color:var(--ep-action-danger);
  color:#fff;
  border-radius:10px;
}
.op3-main .table td:last-child .action-edit:hover,
.op3-main .table td:last-child .action-activate:hover{
  background:var(--ep-action-edit-hover);
  border-color:var(--ep-action-edit-hover);
  color:#fff;
}
.op3-main .table td:last-child .action-danger:hover,
.op3-main .table td:last-child .action-deactivate:hover,
.op3-main .table td:last-child .action-delete:hover{
  background:var(--ep-action-danger-hover);
  border-color:var(--ep-action-danger-hover);
  color:#fff;
}

/* Estados siguen siendo badges. */
.op3-main .badge.status-neutral{
  background:#ECEFF1;
  color:#566273;
}
.op3-main .badge.status-good{
  background:var(--ep-sage-soft);
  color:#285C3A;
}

/* ELABORAPRO_VISUAL_V4_2_END */

/* ELABORAPRO_VISUAL_V4_2_1_START
   Botones de acción = misma geometría que .btn,
   con verde/rojo pastel de baja saturación.
*/
:root{
  --ep-edit-bg:#BFE3C9;
  --ep-edit-border:#A8D5B5;
  --ep-edit-text:#205C36;
  --ep-edit-hover:#AEDAB9;

  --ep-danger-bg:#F3C2BE;
  --ep-danger-border:#EAB0AB;
  --ep-danger-text:#8B302C;
  --ep-danger-hover:#ECB3AE;
}

/* Misma forma de Guardar/Buscar */
.op3-main .btn.action-edit,
.op3-main .btn.action-activate,
.op3-main .btn.action-danger,
.op3-main .btn.action-deactivate,
.op3-main .btn.action-delete{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:9px 14px;
  border-radius:12px;
  text-decoration:none;
  font-weight:800;
  font-size:inherit;
  line-height:1;
  box-shadow:none;
  white-space:nowrap;
}

/* Editar / Activar: verde pastel */
.op3-main .btn.action-edit,
.op3-main .btn.action-activate,
.op3-main .table td:last-child .btn.action-edit,
.op3-main .table td:last-child .btn.action-activate{
  background:var(--ep-edit-bg);
  border:1px solid var(--ep-edit-border);
  color:var(--ep-edit-text);
}
.op3-main .btn.action-edit:hover,
.op3-main .btn.action-activate:hover,
.op3-main .table td:last-child .btn.action-edit:hover,
.op3-main .table td:last-child .btn.action-activate:hover{
  background:var(--ep-edit-hover);
  border-color:var(--ep-edit-border);
  color:var(--ep-edit-text);
}

/* Desactivar / Eliminar: rojo pastel */
.op3-main .btn.action-danger,
.op3-main .btn.action-deactivate,
.op3-main .btn.action-delete,
.op3-main .table td:last-child .btn.action-danger,
.op3-main .table td:last-child .btn.action-deactivate,
.op3-main .table td:last-child .btn.action-delete{
  background:var(--ep-danger-bg);
  border:1px solid var(--ep-danger-border);
  color:var(--ep-danger-text);
}
.op3-main .btn.action-danger:hover,
.op3-main .btn.action-deactivate:hover,
.op3-main .btn.action-delete:hover,
.op3-main .table td:last-child .btn.action-danger:hover,
.op3-main .table td:last-child .btn.action-deactivate:hover,
.op3-main .table td:last-child .btn.action-delete:hover{
  background:var(--ep-danger-hover);
  border-color:var(--ep-danger-border);
  color:var(--ep-danger-text);
}

/* ELABORAPRO_VISUAL_V4_2_1_END */

/* ELABORAPRO_VISUAL_V4_4_ITEMS_START
   V4.4: UX página Ítems solamente.
   - listado más compacto
   - buscador en una línea en escritorio
   - adaptación móvil
*/
.op3-main .ep-items-list{
  margin-top:12px;
}

.op3-main .ep-items-toolbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
}

.op3-main .ep-items-toolbar h3{
  margin:0;
}

.op3-main .ep-items-tools{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}

.op3-main .ep-items-search{
  display:grid;
  grid-template-columns:minmax(240px,1fr) auto;
  align-items:center;
  gap:10px;
  margin:14px 0 18px;
}

.op3-main .ep-items-search input[name="q"]{
  width:100%;
  min-width:0;
  margin:0;
}

.op3-main .ep-items-search .btn{
  margin:0;
  white-space:nowrap;
}

/* En Ítems, la acción contextual Crear debe quedar cerca del contenido.
   Se reduce el aire vertical del encabezado/panel sin cambiar layout global. */
.op3-main:has(.ep-items-list) .op3-create-toggle{
  margin-bottom:12px;
}

.op3-main:has(.ep-items-list) .op3-create-panel{
  margin-top:12px;
}

/* Móvil: buscador cómodo y herramientas sin desbordes */
@media (max-width:700px){
  .op3-main .ep-items-toolbar{
    align-items:flex-start;
  }

  .op3-main .ep-items-tools{
    width:100%;
  }

  .op3-main .ep-items-tools .btn{
    flex:1 1 auto;
  }

  .op3-main .ep-items-search{
    grid-template-columns:1fr;
    gap:8px;
  }

  .op3-main .ep-items-search .btn{
    width:100%;
  }

  .op3-main .ep-items-list{
    margin-top:8px;
  }
}
/* ELABORAPRO_VISUAL_V4_4_ITEMS_END */

/* ELABORAPRO_VISUAL_V4_4_1_ITEMS_START
   Ajuste fino V4.4:
   - búsqueda realmente horizontal en escritorio
   - compactación local del encabezado de Ítems
   - móvil apilado
*/

/* El formulario GET tiene inputs hidden; flex es más robusto que grid aquí. */
.op3-main .ep-items-search{
  display:flex !important;
  flex-wrap:nowrap !important;
  align-items:stretch;
  gap:10px;
  margin:12px 0 16px;
}

.op3-main .ep-items-search input[type="hidden"]{
  display:none !important;
}

.op3-main .ep-items-search input[name="q"]{
  flex:1 1 auto !important;
  width:auto !important;
  min-width:0 !important;
  margin:0 !important;
}

.op3-main .ep-items-search .btn{
  flex:0 0 auto !important;
  width:auto !important;
  min-width:110px;
  margin:0 !important;
}

/* Compactación solo cuando estamos en la pantalla Ítems. */
.op3-main:has(.ep-items-list) .op3-create-toggle{
  margin-top:6px;
  margin-bottom:10px;
}

.op3-main:has(.ep-items-list) .ep-items-list{
  margin-top:8px;
}

/* Móvil */
@media (max-width:700px){
  .op3-main .ep-items-search{
    flex-direction:column !important;
    gap:8px;
  }

  .op3-main .ep-items-search input[name="q"],
  .op3-main .ep-items-search .btn{
    width:100% !important;
  }
}
/* ELABORAPRO_VISUAL_V4_4_1_ITEMS_END */

/* ELABORAPRO_ITEMS_ACTIVAR_BLUE */

.op3-main .action-activate-blue {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-height: 42px;
    padding: 9px 14px;

    border-radius: 12px;
    border: 1px solid #AFCBF8;

    background: #C9DCFA;
    color: #174F9E;

    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
}

.op3-main .action-activate-blue:hover {
    background: #BBD3F8;
    color: #123F80;
}


/* ELABORAPRO ITEMS - ACTIVAR AZUL PASTEL FINAL */
.op3-main a.btn.action-activate-blue,
.op3-main .op-actions-inline a.btn.action-activate-blue {
    background: #C9DCFA !important;
    border: 1px solid #AFCBF8 !important;
    color: #174F9E !important;

    min-height: 42px;
    padding: 9px 14px;
    border-radius: 12px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    font-weight: 800;
    text-decoration: none;
}

.op3-main a.btn.action-activate-blue:hover,
.op3-main .op-actions-inline a.btn.action-activate-blue:hover {
    background: #BBD3F8 !important;
    border-color: #9EBFF3 !important;
    color: #123F80 !important;
}
