:root{--purple:#785cff;--purple2:#6b4df4;--bg:#f6f6fb;--card:#fff;--text:#27263a;--muted:#74748a;--line:#e8e7ef;--good:#0b8f5b;--bad:#c43d4b;--warn:#aa6b00;--sidebar:#fff}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
a{color:inherit}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:10}
.brand{display:flex;gap:10px;align-items:center;text-decoration:none;font-weight:800;font-size:18px}.brand-mark{background:var(--purple);color:white;width:34px;height:34px;border-radius:10px;display:grid;place-items:center}.topmeta{display:flex;gap:12px;align-items:center}.pill,.badge{border-radius:999px;padding:6px 10px;background:#eeeafe;color:#503ad0;font-size:12px;font-weight:700}.muted{color:var(--muted)}
.app-shell{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 68px)}.sidebar{background:var(--sidebar);border-right:1px solid var(--line);padding:22px 14px;display:flex;flex-direction:column;justify-content:space-between}
.sidebar nav{display:grid;gap:6px}.sidebar a{padding:11px 12px;border-radius:9px;text-decoration:none;color:#5f5e70}.sidebar a.active,.sidebar a:hover{background:#eeeafe;color:#503ad0;font-weight:700}.sidebar-foot{padding:14px 10px;font-size:13px}
.content{padding:30px;max-width:1500px;width:100%}.hero{background:linear-gradient(135deg,#785cff,#5c43dc);color:#fff;border-radius:18px;padding:30px;display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:24px;box-shadow:0 12px 30px #624aea2a}
.hero h1{margin:0 0 8px;font-size:30px}.hero p{margin:0;opacity:.9}.hero .mode{background:#ffffff20;border:1px solid #ffffff50;border-radius:14px;padding:14px 18px;white-space:nowrap}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 4px 16px #2221}.card h2,.card h3{margin-top:0}.stat{font-size:28px;font-weight:800;color:#423e55}.stat-label{color:var(--muted);font-size:13px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:9px;padding:10px 15px;font-weight:750;text-decoration:none;cursor:pointer;font:inherit}.btn-primary{background:var(--purple);color:#fff}.btn-primary:hover{background:var(--purple2)}.btn-secondary{background:#f0eefb;color:#4e39cc}.btn-danger{background:#fff0f1;color:#a72a36}.btn:disabled{opacity:.5;cursor:not-allowed}
.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin:0 0 18px;flex-wrap:wrap}.toolbar .left,.toolbar .right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
input,select{border:1px solid #d9d7e2;border-radius:8px;padding:10px 11px;background:#fff;font:inherit;color:inherit}input[type=checkbox]{width:18px;height:18px;padding:0;accent-color:var(--purple)}
label.field{display:grid;gap:7px;margin-bottom:15px;font-weight:650}.help{font-size:12px;color:var(--muted);font-weight:400}
.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse}th,td{padding:13px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;color:var(--muted);background:#fafafe;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:0}
.product-thumb{width:60px;height:60px;border:1px solid var(--line);border-radius:9px;object-fit:contain;background:#fff}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.image-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.image-card .imgbox{height:220px;display:grid;place-items:center;background:#fff;border-bottom:1px solid var(--line)}.image-card img{max-width:100%;max-height:100%;object-fit:contain}.image-card .body{padding:14px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.alert{border-radius:10px;padding:12px 14px;margin-bottom:14px;border:1px solid}.alert.info{background:#f0edff;border-color:#dcd4ff;color:#4b36c7}.alert.success{background:#ebfaf4;border-color:#c6efdf;color:#087b4e}.alert.error{background:#fff0f1;border-color:#ffd2d6;color:#a52c38}.alert.warning{background:#fff8e9;border-color:#f2deb0;color:#885600}
.status-ok{color:var(--good);font-weight:750}.status-error{color:var(--bad);font-weight:750}.status-dry{color:#6b50e5;font-weight:750}.status-warn{color:var(--warn);font-weight:750}
.preview-compare{display:grid;grid-template-columns:1fr 1fr;gap:18px}.preview-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px}.preview-box img{display:block;width:100%;max-height:520px;object-fit:contain;background:white}.preview-box h3{margin:0 0 12px}
.kv{display:grid;grid-template-columns:180px 1fr;gap:8px 14px}.kv div{padding:7px 0;border-bottom:1px solid var(--line)}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#f5f4f8;padding:2px 5px;border-radius:5px;font-size:12px}
.empty{padding:35px;text-align:center;color:var(--muted)}.pagination{display:flex;gap:8px;margin-top:16px}.pagination a{text-decoration:none;background:#fff;border:1px solid var(--line);padding:8px 12px;border-radius:8px}
.setup-wrap{max-width:820px;margin:45px auto;padding:0 18px}.setup-logo{text-align:center;margin-bottom:24px}.setup-logo .brand-mark{margin:0 auto 10px}.checks{display:grid;gap:8px;margin:18px 0}.check{display:flex;justify-content:space-between;padding:10px 12px;background:#fafafe;border:1px solid var(--line);border-radius:8px}
@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.content{padding:18px}.grid,.grid.two,.preview-compare{grid-template-columns:1fr}.hero{align-items:flex-start;flex-direction:column}}


/* v1.1 - estado de normalización */
.catalog-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.catalog-summary>div,.image-status-summary>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;gap:8px;align-items:baseline}.catalog-summary strong,.image-status-summary strong{font-size:22px}.catalog-summary span,.image-status-summary span{font-size:12px;color:var(--muted)}.catalog-summary .summary-pending strong,.image-status-summary .pending strong{color:var(--warn)}.catalog-summary .summary-ready strong,.image-status-summary .ready strong{color:var(--good)}
.status-chip{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;white-space:nowrap}.status-chip.pending{background:#fff4dc;color:#8b5900;border:1px solid #f1d59a}.status-chip.ready{background:#eaf9f2;color:#08764b;border:1px solid #bfe9d8}.status-chip.neutral{background:#f2f2f6;color:#6f6e80;border:1px solid #e2e1e8}.status-sub{font-size:11px;color:var(--muted);margin-top:5px}.row-pending td{background:#fffdfa}.row-ready td{background:#fcfffd}
.image-status-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.image-card.is-pending{border-color:#efd59e;box-shadow:0 0 0 2px #fff6e6 inset}.image-card.is-ready{border-color:#c6e9da}.image-meta{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.image-meta span{font-size:11px;background:#f5f4f8;border-radius:999px;padding:4px 7px;color:#68677b}.pending-reason{font-size:12px;color:#875800;background:#fff8e9;border:1px solid #f0ddb5;border-radius:8px;padding:8px;margin:8px 0}
@media(max-width:900px){.catalog-summary,.image-status-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v1.3 - progreso real de normalización */
.progress-modal{position:fixed;inset:0;background:rgba(31,31,46,.52);backdrop-filter:blur(3px);z-index:1000;display:grid;place-items:center;padding:18px}
.progress-modal[hidden]{display:none}.progress-panel{width:min(620px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 24px 80px rgba(31,31,46,.28);text-align:center}
.progress-icon{width:48px;height:48px;border-radius:14px;background:#eeeafe;color:#5c43dc;display:grid;place-items:center;margin:0 auto 12px;font-size:26px;font-weight:800}.progress-icon.spinning{animation:progress-spin 1s linear infinite}
@keyframes progress-spin{to{transform:rotate(360deg)}}
.progress-panel h2{margin:0 0 5px;font-size:24px}.progress-subtitle{margin:0 auto 18px;color:var(--muted);max-width:520px}
.progress-track{height:14px;border-radius:999px;background:#eceaf4;overflow:hidden;box-shadow:inset 0 1px 2px #0001}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,#785cff,#5c43dc);border-radius:inherit;transition:width .25s ease}
.progress-count{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font-size:14px}.progress-current{font-size:16px}.progress-percent{color:#5c43dc;font-weight:800}
.progress-current-item{margin:16px 0 12px;padding:10px 12px;border-radius:10px;background:#f7f6fc;color:#55536a;min-height:42px;display:grid;place-items:center}
.progress-stats{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;font-size:13px}.progress-stats .ok{color:var(--good)}.progress-stats .skip{color:#6b50e5}.progress-stats .err{color:var(--bad)}
.progress-note{margin-top:16px;padding:10px 12px;background:#fff8e9;border:1px solid #f2deb0;color:#795100;border-radius:10px;font-size:13px}.progress-errors{text-align:left;margin-top:14px;padding:12px 14px;background:#fff0f1;border:1px solid #ffd2d6;color:#8f2933;border-radius:10px;max-height:180px;overflow:auto}.progress-errors ul{margin:8px 0 0;padding-left:20px}.progress-finish{margin-top:16px}.is-processing{overflow:hidden}
@media(max-width:600px){.progress-panel{padding:20px}.progress-stats{gap:10px}.progress-panel h2{font-size:21px}}

/* v1.4 - estadísticas globales de todo el catálogo */
.global-stats-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 4px 16px #2221}.global-stats-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}.global-stats-head h2{margin:0 0 3px;font-size:18px}.global-stats-head p{margin:0;color:var(--muted);font-size:12px}.catalog-summary-global{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:10px}.catalog-summary-global .summary-empty strong{color:#6f6e80}.global-stats-status{font-size:12px;color:var(--muted);padding-top:2px}.global-stats-status.is-updating{color:#5a47cf}.stats-scan-track{height:5px;border-radius:999px;overflow:hidden;background:#eeecf7;margin-top:10px}.stats-scan-track[hidden]{display:none}.stats-scan-track>div{width:35%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#785cff,#5c43dc);animation:stats-scan 1.35s ease-in-out infinite alternate}.page-stats-line{font-size:12px;color:var(--muted);margin:2px 0 12px;padding:0 2px}@keyframes stats-scan{from{transform:translateX(-70%)}to{transform:translateX(250%)}}@media(max-width:1050px){.catalog-summary-global{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:650px){.catalog-summary-global{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v1.5 - planes, cupos y Billing */
.quota-inline{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f2efff;border:1px solid #ded7ff;color:#4b36c7;border-radius:11px;padding:10px 13px;margin-bottom:14px}.quota-inline strong{font-size:14px}.quota-inline span{font-size:12px;color:#6b5ab6}.quota-inline a{margin-left:auto;font-size:12px;font-weight:800}.quota-dashboard{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}.quota-actions{display:flex;align-items:center;gap:16px}.quota-big{font-size:30px;line-height:1;font-weight:850;color:#4e39cc;text-align:right}.quota-big span{display:block;font-size:11px;font-weight:650;color:var(--muted);margin-top:5px}.plans-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:18px 0}.plan-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 4px 16px #2221;overflow:hidden}.plan-card.is-current{border-color:#b9abff;box-shadow:0 0 0 2px #eeeafe inset}.plan-card h2{margin:0 0 8px}.plan-price{font-size:30px;font-weight:850;color:#423e55;margin:6px 0 14px}.plan-price span{font-size:12px;color:var(--muted);font-weight:650}.plan-ribbon{position:absolute;top:13px;right:13px;background:#eeeafe;color:#503ad0;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}.plan-current-card{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}.trial-explain{margin-top:18px}.btn.is-disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.admin-wrap{max-width:1250px;margin:36px auto;padding:0 20px}
@media(max-width:900px){.plans-grid{grid-template-columns:1fr}.quota-big{text-align:left}.quota-actions{width:100%;justify-content:space-between}}
/* v1.6 i18n */
.lang-switch{display:inline-flex;align-items:center;gap:5px;font-size:12px}.lang-switch a{color:var(--muted);text-decoration:none;font-weight:700}.lang-switch a.active{color:var(--primary)}.trial-clock{margin:10px 0 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2,#faf9ff)}

/* v1.7 - selector de idioma visible + simulador comercial */
.lang-switch{gap:7px}.lang-switch a{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid transparent;border-radius:999px;background:#f7f6fb}.lang-switch a:hover{background:#f0eefb;color:#4e39cc}.lang-switch a.active{border-color:#cfc5ff;background:#eeeafe;color:#503ad0}.lang-switch .flag{font-size:16px;line-height:1}.simulation-banner{background:#fff3d8;border-color:#e9c979;color:#7a5100}.simulation-banner a{font-weight:800;color:inherit}.commercial-test-tools{margin-top:18px;border-style:dashed;border-color:#d9cc8d;background:#fffdf6}.commercial-test-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.commercial-test-head h2{margin-bottom:5px}.simulation-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:16px}.simulation-grid form{margin:0}.simulation-btn{width:100%;min-height:44px}.simulation-reset{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
@media(max-width:1150px){.simulation-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:650px){.simulation-grid{grid-template-columns:1fr}.topmeta{gap:7px}.lang-switch a{padding:5px 7px}.lang-switch a .flag{font-size:15px}}

.plan-blocked-alert a{font-weight:800;color:inherit;text-decoration:underline}.blocked-preview-note{display:inline-block;margin-top:5px;font-size:12px}.badge.badge-blocked{background:#fff1d1;color:#875600;border:1px solid #efd28f}

/* v1.9 - Trial vencido: diferencia fotos sin usar de fotos disponibles */
.quota-big small{display:block;font-size:10px;line-height:1.25;font-weight:750;color:#9a6a00;margin-top:4px;white-space:nowrap}


/* v2.0 - layout amplio, centrado e iconografía moderna */

.app-shell{
    grid-template-columns:220px minmax(0,1fr);
}

.content{
    width:min(100%,1800px);
    max-width:none;
    min-width:0;
    margin-inline:auto;
    padding:32px 42px 48px;
}

.sidebar nav{
    gap:7px;
}

.sidebar nav a{
    display:flex;
    align-items:center;
    gap:11px;
    min-height:44px;
    padding:10px 12px;
    transition:
        background-color .18s ease,
        color .18s ease,
        transform .18s ease;
}

.sidebar nav a:hover{
    transform:translateX(2px);
}

.nav-icon{
    width:21px;
    height:21px;
    flex:0 0 21px;
    display:grid;
    place-items:center;
    color:#7a788d;
}

.nav-icon svg{
    width:20px;
    height:20px;
    display:block;
    fill:none;
    stroke:currentColor;
    stroke-width:1.8;
    stroke-linecap:round;
    stroke-linejoin:round;
}

.sidebar nav a.active .nav-icon,
.sidebar nav a:hover .nav-icon{
    color:#503ad0;
}

.brand-mark svg{
    width:21px;
    height:21px;
    display:block;
    fill:none;
    stroke:currentColor;
    stroke-width:1.7;
    stroke-linecap:round;
    stroke-linejoin:round;
}

@media(min-width:1600px){
    .content{
        padding-left:48px;
        padding-right:48px;
    }
}

@media(max-width:1200px){
    .content{
        padding:26px;
    }
}

@media(max-width:900px){
    .content{
        width:100%;
        margin:0;
        padding:18px;
    }
}


/* v2.1 - iconografía de contenido */

.metric-card{
    display:flex;
    align-items:center;
    gap:16px;
    min-height:94px;
}

.metric-copy{
    min-width:0;
}

.metric-icon,
.section-icon,
.title-icon{
    display:grid;
    place-items:center;
    flex:none;
}

.metric-icon svg,
.section-icon svg,
.title-icon svg{
    width:100%;
    height:100%;
    display:block;
}

.metric-icon{
    width:46px;
    height:46px;
    padding:11px;
    border-radius:14px;
}

.metric-good{
    background:#eaf9f2;
    color:var(--good);
}

.metric-error{
    background:#fff0f1;
    color:var(--bad);
}

.metric-image{
    background:#eeeafe;
    color:#5c43dc;
}

.card-leading{
    display:flex;
    align-items:center;
    gap:14px;
}

.section-icon{
    width:42px;
    height:42px;
    padding:10px;
    border-radius:13px;
    background:#eeeafe;
    color:#5c43dc;
}

.title-with-icon{
    display:flex;
    align-items:center;
    gap:10px;
}

.title-icon{
    width:34px;
    height:34px;
    padding:7px;
    border-radius:10px;
    background:#eeeafe;
    color:#5c43dc;
}

@media(max-width:650px){
    .metric-icon{
        width:40px;
        height:40px;
        padding:9px;
    }
}


/* v2.2 - iconografía secundaria */

.page-title-with-icon{
    display:flex;
    align-items:center;
    gap:11px;
    margin:0 0 18px;
}

.toolbar .page-title-with-icon{
    margin:0;
}

.page-title-icon{
    width:38px;
    height:38px;
    flex:0 0 38px;
    display:grid;
    place-items:center;
    padding:8px;
    border-radius:11px;
    background:#eeeafe;
    color:#5c43dc;
}

.page-title-icon svg,
.inline-icon svg,
.summary-icon svg,
.status-inline-icon svg,
.payment-inline-icon svg,
.plan-name-icon svg{
    width:100%;
    height:100%;
    display:block;
}

.inline-icon{
    width:20px;
    height:20px;
    flex:0 0 20px;
    display:grid;
    place-items:center;
}

.summary-metric{
    align-items:center !important;
    gap:10px !important;
}

.summary-copy{
    display:grid;
    gap:1px;
}

.summary-icon{
    width:36px;
    height:36px;
    flex:0 0 36px;
    display:grid;
    place-items:center;
    padding:8px;
    border-radius:10px;
}

.summary-purple{
    background:#eeeafe;
    color:#5c43dc;
}

.summary-warning{
    background:#fff4dc;
    color:var(--warn);
}

.summary-good{
    background:#eaf9f2;
    color:var(--good);
}

.summary-neutral{
    background:#f2f2f6;
    color:#6f6e80;
}

.status-with-icon{
    display:inline-flex;
    align-items:center;
    gap:5px;
}

.status-inline-icon{
    width:16px;
    height:16px;
    flex:0 0 16px;
    display:inline-grid;
    place-items:center;
}

.payment-inline-icon{
    width:22px;
    height:22px;
    display:inline-grid;
    place-items:center;
    color:#5c43dc;
    vertical-align:middle;
    margin-right:6px;
}

.plan-name-title{
    padding-right:80px;
}

.plan-name-icon{
    width:30px;
    height:30px;
    flex:0 0 30px;
    padding:6px;
    border-radius:9px;
    background:#f0edff;
    color:#5c43dc;
}

.title-icon-good{
    background:#eaf9f2;
    color:var(--good);
}

@media(max-width:650px){
    .page-title-icon{
        width:34px;
        height:34px;
        flex-basis:34px;
    }

    .summary-icon{
        width:32px;
        height:32px;
        flex-basis:32px;
        padding:7px;
    }
}
