/* v16.1.1190 — componente global oficial de upload */
:root{
  --spj-upload-primary:var(--primary,#2057c9);
  --spj-upload-soft:color-mix(in srgb,var(--spj-upload-primary) 7%,#fff);
  --spj-upload-border:#dbe4ef;
  --spj-upload-text:#172033;
  --spj-upload-muted:#6b778c;
  --spj-upload-danger:#dc2626;
  --spj-upload-radius:16px;
}
.spj-upload-field-shell{min-width:0;width:100%}
input[type="file"][data-spj-upload],input[type="file"].spj-upload-native{
  position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;
}
.spj-upload-component{position:relative;width:100%;min-width:0;background:#fff;border:1px solid #e3e8ef;border-radius:18px;padding:16px;box-shadow:0 7px 24px rgba(15,23,42,.045);font-family:'DM Sans',Inter,Arial,sans-serif;color:var(--spj-upload-text)}
.spj-upload-component.is-generic{box-shadow:none;border-color:#e5eaf0;padding:14px}
.spj-upload-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;min-height:34px}
.spj-upload-title-wrap{display:flex;align-items:center;gap:10px;min-width:0}.spj-upload-title-icon{width:34px;height:34px;border-radius:11px;background:var(--spj-upload-soft);color:var(--spj-upload-primary);display:grid;place-items:center;flex:0 0 auto;font-size:15px}.spj-upload-title{font-size:14px;font-weight:800;line-height:1.25;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spj-upload-recommended{display:inline-flex;align-items:center;justify-content:center;min-height:27px;padding:0 10px;border-radius:999px;background:#f4f6f9;color:#64748b;font-size:11px;font-weight:700;white-space:nowrap}.spj-upload-recommended:empty{display:none}
.spj-upload-dropzone{min-height:145px;border:1.5px dashed #c7d4e4;border-radius:14px;background:#fbfcfe;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px;cursor:pointer;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,transform .18s ease;outline:none}
.spj-upload-dropzone:hover,.spj-upload-component.is-dragover .spj-upload-dropzone,.spj-upload-dropzone:focus-visible{border-color:var(--spj-upload-primary);background:var(--spj-upload-soft);box-shadow:0 0 0 4px color-mix(in srgb,var(--spj-upload-primary) 8%,transparent);transform:translateY(-1px)}
.spj-upload-cloud{font-size:27px;color:var(--spj-upload-primary);margin-bottom:8px}.spj-upload-choose{font-size:14px;font-weight:800;color:#253047}.spj-upload-drag{margin-top:2px;font-size:12px;color:#7b8798}.spj-upload-rules{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:13px;color:#728095;font-size:11px}.spj-upload-rules .dot{width:3px;height:3px;border-radius:50%;background:#9aabc0}.spj-upload-extra-hint{margin-top:9px;font-size:11px;color:#7b8798;line-height:1.45;text-align:center}
.spj-upload-preview{display:none}.spj-upload-component.has-preview .spj-upload-dropzone{display:none}.spj-upload-component.has-preview .spj-upload-preview{display:block}
.spj-upload-media{position:relative;min-height:150px;border-radius:13px;overflow:hidden;background:#f4f7fb;border:1px solid #dce5ef;display:flex;align-items:center;justify-content:center}.spj-upload-media img{width:100%;height:auto;max-height:280px;object-fit:contain;display:block;background:#f8fafc}.spj-upload-file-icon{font-size:42px;color:#8fa0b6}.spj-upload-zoom{position:absolute;inset:0;display:grid;place-items:center;background:rgba(15,23,42,0);color:#fff;text-decoration:none;transition:background .18s ease}.spj-upload-zoom span{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:rgba(15,23,42,.67);font-size:18px;opacity:0;transform:scale(.88);transition:.18s ease;box-shadow:0 8px 26px rgba(15,23,42,.25)}.spj-upload-media:hover .spj-upload-zoom{background:rgba(15,23,42,.04)}.spj-upload-media:hover .spj-upload-zoom span,.spj-upload-zoom:focus-visible span{opacity:1;transform:scale(1)}
.spj-upload-x{position:absolute;top:8px;right:8px;width:34px;height:34px;border-radius:50%;border:2px solid #fff;background:#263548;color:#fff;display:grid;place-items:center;cursor:pointer;z-index:4;box-shadow:0 4px 14px rgba(15,23,42,.24);transition:.16s}.spj-upload-x:hover{background:var(--spj-upload-danger);transform:scale(1.04)}.spj-upload-x[hidden]{display:none!important}
.spj-upload-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.spj-upload-action{min-height:38px;border:1px solid #dfe6ef;border-radius:10px;background:#fff;color:#2559b8;display:inline-flex;align-items:center;justify-content:center;gap:7px;font:inherit;font-size:12px;font-weight:800;cursor:pointer;text-decoration:none;transition:.16s}.spj-upload-action:hover{border-color:#b8c9df;background:#f7faff;color:var(--spj-upload-primary)}.spj-upload-action.danger{color:#dc2626}.spj-upload-action.danger:hover{background:#fff5f5;border-color:#fecaca}.spj-upload-action[hidden]{display:none!important}
.spj-upload-meta{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:9px;color:#728095;font-size:11px;line-height:1.35}.spj-upload-file-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spj-upload-dimensions{white-space:nowrap}
.spj-upload-error{display:none;min-height:125px;border:1.5px dashed #f4a6a6;border-radius:14px;background:#fffafa;align-items:center;justify-content:center;text-align:center;padding:18px}.spj-upload-component.has-error .spj-upload-dropzone,.spj-upload-component.has-error .spj-upload-preview{display:none}.spj-upload-component.has-error .spj-upload-error{display:flex;flex-direction:column}.spj-upload-error-icon{width:38px;height:38px;border-radius:50%;background:#fee2e2;color:#dc2626;display:grid;place-items:center;font-size:16px;margin-bottom:8px}.spj-upload-error strong{font-size:13px;color:#7f1d1d}.spj-upload-error span{margin-top:3px;font-size:11px;color:#9f4a4a}.spj-upload-retry{margin-top:10px;border:0;background:transparent;color:var(--spj-upload-primary);font-weight:800;cursor:pointer;font-size:12px}
.spj-upload-component.is-loading:after{content:'Preparando imagem…';position:absolute;inset:0;border-radius:inherit;background:rgba(255,255,255,.88);display:grid;place-items:center;color:var(--spj-upload-primary);font-size:13px;font-weight:800;z-index:8}
/* Compatibilidade visual com wrappers antigos ainda presentes em páginas não migradas. */
.sp-upload-box{border-radius:16px!important;border-color:#dbe4ef!important;background:#fff!important;box-shadow:none!important}.sp-upload-btn{border-radius:11px!important;box-shadow:none!important}.sp-upload-item,.upload-preview{border-radius:13px!important}
@media(max-width:760px){.spj-upload-component{padding:13px;border-radius:15px}.spj-upload-header{align-items:flex-start}.spj-upload-recommended{font-size:10px}.spj-upload-dropzone{min-height:130px}.spj-upload-actions{grid-template-columns:1fr}.spj-upload-media{min-height:125px}}
/* Integração com os grids de identidade/logo existentes: o componente novo ocupa a área do uploader sem duplicar a prévia antiga. */
.spb-logo-upload-field>.spj-upload-component,.spb-identity-panel .spb-logo-upload-field>.spj-upload-component{grid-area:uploader!important;margin:0!important;min-width:0!important}
.spb-logo-upload-field>.spj-upload-component+.spb-logo-note{grid-area:note!important}

/* v16.1.1191 — banner horizontal e estados corrigidos */
.spj-upload-error-message{margin-top:4px!important;font-size:11px!important;color:#9f4a4a!important;line-height:1.4!important}
.spj-upload-error-icon{font-size:16px!important;line-height:1!important}
.spj-upload-error-icon i{display:block!important}
.spj-banner-upload-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;width:100%}
.spj-banner-upload-col{min-width:0;width:100%}
.spj-banner-upload-col[hidden]{display:none!important}
.spj-upload-banner .spj-upload-component{width:100%;padding:18px;border-radius:16px;box-shadow:0 5px 18px rgba(15,23,42,.035)}
.spj-upload-banner .spj-upload-header{margin-bottom:10px}
.spj-upload-banner .spj-upload-dropzone{min-height:122px;padding:20px 24px;border-radius:13px}
.spj-upload-banner .spj-upload-media{min-height:130px;max-height:none;border-radius:13px}
.spj-upload-banner .spj-upload-media img{width:100%;max-height:320px;object-fit:contain}
.spj-upload-banner .spj-upload-actions{grid-template-columns:repeat(3,minmax(130px,1fr));gap:10px}
.spj-upload-banner .spj-upload-action{min-height:40px}
.spj-upload-banner .spj-upload-meta{padding:0 2px}
@media(min-width:1280px){
  .spj-upload-banner .spj-upload-component.has-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.55fr);column-gap:16px;align-items:center}
  .spj-upload-banner .spj-upload-component.has-preview .spj-upload-header{grid-column:1/-1}
  .spj-upload-banner .spj-upload-component.has-preview .spj-upload-preview{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.75fr);gap:12px 14px;align-items:center}
  .spj-upload-banner .spj-upload-component.has-preview .spj-upload-media{grid-row:1/3;grid-column:1}
  .spj-upload-banner .spj-upload-component.has-preview .spj-upload-actions{grid-column:2;grid-row:1;grid-template-columns:1fr}
  .spj-upload-banner .spj-upload-component.has-preview .spj-upload-meta{grid-column:2;grid-row:2;display:block}
  .spj-upload-banner .spj-upload-component.has-preview .spj-upload-file-name,.spj-upload-banner .spj-upload-component.has-preview .spj-upload-dimensions{display:block;white-space:normal;margin:4px 0}
}
@media(max-width:760px){
  .spj-banner-upload-grid{gap:14px}.spj-upload-banner .spj-upload-component{padding:13px}.spj-upload-banner .spj-upload-actions{grid-template-columns:1fr}.spj-upload-banner .spj-upload-dropzone{min-height:118px;padding:16px}
}
