:root{--brand-900:#003b5c;--brand-800:#004a72;--brand-700:#005888;--brand-600:#0b6a9c;--brand-500:#1c7fb5;--brand-200:#80b8e8;--brand-100:#cfe6f8;--brand-50:#eef7fd;--ink-900:#0f172a;--ink-800:#1e293b;--ink-700:#334155;--ink-600:#475569;--ink-500:#64748b;--ink-400:#94a3b8;--ink-300:#cbd5e1;--line:#e2e8f0;--line-strong:#cbd5e1;--surface:#fff;--bg:#f4f8fb;--success-700:#047857;--success-600:#059669;--success-50:#ecfdf5;--warning-700:#b45309;--warning-50:#fffbeb;--danger-700:#b91c1c;--danger-600:#dc2626;--danger-50:#fef2f2;--radius-sm:8px;--radius:12px;--radius-lg:18px;--shadow-sm:0 1px 2px #0f172a0f;--shadow:0 10px 30px #0f172a12;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:"SFMono-Regular", ui-monospace, Menlo, Monaco, Consolas, monospace}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink-900);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:14px}h1,h2,h3,p{margin:0}a{color:var(--brand-700);text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100%;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex-shrink:0;width:248px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0}.sidebar-brand{align-items:center;gap:10px;padding:0 8px 22px;display:flex}.sidebar-brand img{width:150px;height:auto}.sidebar-brand-sub{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-400);padding-left:2px;font-size:10px;font-weight:600}.sidebar-nav{flex-direction:column;gap:4px;display:flex}.nav-item{color:var(--ink-600);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-weight:500;transition:background .15s,color .15s;display:flex}.nav-item:hover{background:var(--brand-50);color:var(--brand-800)}.nav-item.active{background:var(--brand-700);color:#fff;box-shadow:0 6px 14px #0058883d}.nav-item .icon{flex-shrink:0;width:18px;height:18px}.sidebar-footer{border-top:1px solid var(--line);margin-top:auto;padding-top:18px}.user-box{justify-content:space-between;align-items:center;gap:8px;padding:8px 4px 2px;display:flex}.user-name{color:var(--ink-800);font-size:13px;font-weight:600}.user-role{color:var(--ink-400);font-size:11px}.app-main{flex:1;min-width:0;padding:32px 40px 56px}.page{max-width:1180px;margin:0 auto}.page-header{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px;display:flex}.page-header h1{letter-spacing:-.02em;color:var(--ink-900);font-size:26px}.page-header p{color:var(--ink-500);max-width:680px;margin-top:6px;font-size:14px;line-height:1.5}.page-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:8px;height:40px;padding:0 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,color .15s,transform 50ms;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn .icon{width:17px;height:17px}.btn-primary{background:var(--brand-700);color:#fff;box-shadow:0 6px 14px #00588833}.btn-primary:hover:not(:disabled){background:var(--brand-800)}.btn-secondary{background:var(--surface);border-color:var(--line-strong);color:var(--ink-700)}.btn-secondary:hover:not(:disabled){border-color:var(--brand-200);color:var(--brand-800);background:var(--brand-50)}.btn-ghost{color:var(--ink-600);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--brand-50);color:var(--brand-800)}.btn-danger{background:var(--danger-50);color:var(--danger-700);border-color:#fecaca}.btn-danger:hover:not(:disabled){background:#fee2e2}.btn-sm{border-radius:8px;height:32px;padding:0 11px;font-size:12.5px}.btn-sm .icon{width:15px;height:15px}.icon-btn{width:30px;height:30px;color:var(--ink-500);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover:not(:disabled){background:var(--brand-50);color:var(--brand-800)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn .icon{width:16px;height:16px}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--ink-700);font-size:12.5px;font-weight:600}.field-hint{color:var(--ink-400);font-size:12px}.field-error{color:var(--danger-600);font-size:12px}.input,.select,.textarea{border:1px solid var(--line-strong);background:var(--surface);width:100%;min-height:40px;color:var(--ink-900);border-radius:10px;outline:none;padding:9px 12px;transition:border-color .15s,box-shadow .15s}.textarea{resize:vertical;min-height:84px}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px #1c7fb524}.input::placeholder,.textarea::placeholder{color:var(--ink-400)}.file-input{align-items:center;gap:10px;min-height:40px;display:flex}.file-name{color:var(--ink-500);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;padding:18px 20px;display:flex}.card-title{color:var(--ink-900);font-size:15px;font-weight:700}.card-subtitle{color:var(--ink-500);margin-top:3px;font-size:12.5px}.card-body{padding:20px}.card-body.tight{padding:0}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px 18px}.stat-label{color:var(--ink-500);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:600}.stat-value{letter-spacing:-.02em;color:var(--ink-900);margin-top:8px;font-size:26px;font-weight:700}.stat-value.accent{color:var(--brand-700)}.table-wrap{border-radius:0 0 var(--radius-lg) var(--radius-lg);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:13.5px}.table th{text-align:left;color:var(--ink-500);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);white-space:nowrap;background:#f8fafc;padding:11px 16px;font-size:11.5px;font-weight:700}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:12px 16px}.table tr:last-child td{border-bottom:none}.table tbody tr:hover{background:#fbfdff}.table .code{font-family:var(--mono);color:var(--brand-800);font-size:12.5px;font-weight:600}.table .price{color:var(--ink-900);white-space:nowrap;font-weight:700}.table .muted{color:var(--ink-400)}.table-actions{justify-content:flex-end;align-items:center;gap:6px;display:flex}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;height:22px;padding:0 8px;font-size:11.5px;font-weight:600;display:inline-flex}.badge-brand{background:var(--brand-50);color:var(--brand-800)}.badge-success{background:var(--success-50);color:var(--success-700)}.badge-warning{background:var(--warning-50);color:var(--warning-700)}.badge-danger{background:var(--danger-50);color:var(--danger-700)}.badge-neutral{color:var(--ink-500);background:#f1f5f9}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line-strong);background:var(--surface);height:32px;color:var(--ink-600);cursor:pointer;border-radius:999px;padding:0 13px;font-size:12.5px;font-weight:600}.chip:hover{border-color:var(--brand-200);color:var(--brand-800)}.chip.active{background:var(--brand-700);border-color:var(--brand-700);color:#fff}.alert{border-radius:var(--radius);gap:10px;padding:12px 14px;font-size:13px;line-height:1.5;display:flex}.alert .icon{flex-shrink:0;width:18px;height:18px;margin-top:1px}.alert-info{background:var(--brand-50);color:var(--brand-800);border:1px solid var(--brand-100)}.alert-success{background:var(--success-50);color:var(--success-700);border:1px solid #a7f3d0}.alert-warning{background:var(--warning-50);color:var(--warning-700);border:1px solid #fde68a}.alert-danger{background:var(--danger-50);color:var(--danger-700);border:1px solid #fecaca}.empty{text-align:center;color:var(--ink-500);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:48px 20px;display:flex}.empty-icon{background:var(--brand-50);width:52px;height:52px;color:var(--brand-700);border-radius:16px;justify-content:center;align-items:center;display:flex}.empty-icon .icon{width:24px;height:24px}.empty h3{color:var(--ink-800);font-size:15px}.empty p{max-width:420px;font-size:13px;line-height:1.5}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.pagination{border-top:1px solid var(--line);color:var(--ink-500);justify-content:space-between;align-items:center;gap:12px;padding:13px 18px;font-size:12.5px;display:flex}.pagination-actions{gap:6px;display:flex}.stack{flex-direction:column;gap:16px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.mono{font-family:var(--mono)}.muted{color:var(--ink-500)}.text-sm{font-size:12.5px}.dropzone{border:2px dashed var(--brand-200);border-radius:var(--radius-lg);text-align:center;cursor:pointer;background:linear-gradient(#fbfdff,#f2f9fe);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:44px 24px;transition:border-color .15s,background .15s;display:flex}.dropzone:hover,.dropzone.dragging{border-color:var(--brand-500);background:var(--brand-50)}.dropzone-icon{background:var(--brand-700);color:#fff;border-radius:18px;justify-content:center;align-items:center;width:56px;height:56px;display:flex;box-shadow:0 10px 22px #00588840}.dropzone-icon .icon{width:26px;height:26px}.dropzone h3{color:var(--ink-800);font-size:15px}.dropzone p{color:var(--ink-500);font-size:13px}.ficha-layout{grid-template-columns:minmax(0,1fr) 420px;align-items:start;gap:22px;display:grid}.preview-card{position:sticky;top:24px}.preview-shell{aspect-ratio:675/1200;border:1px solid var(--line);background:#fff;border-radius:14px;width:100%;position:relative;overflow:hidden}.preview-frame{transform-origin:0 0;border:0;width:675px;height:1200px;position:absolute;top:0;left:0}.photo-list{flex-direction:column;gap:10px;display:flex}.photo-item{border:1px solid var(--line);background:#fbfdff;border-radius:12px;align-items:center;gap:12px;padding:10px;display:flex}.photo-thumb{border:1px solid var(--line);background:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:92px;height:52px;display:flex;overflow:hidden}.photo-thumb img{object-fit:contain;max-width:100%;max-height:100%}.photo-fields{flex:1;min-width:0}.photo-actions{align-items:center;gap:2px;display:flex}.logo-preview{border:1px solid var(--line);background:#fbfdff;border-radius:12px;align-items:center;gap:12px;padding:10px;display:flex}.logo-preview img{object-fit:contain;max-width:120px;max-height:56px}.models-toolbar{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:14px;flex-wrap:wrap;align-items:center;gap:10px;padding:10px;display:flex}.models-search{flex:240px;min-width:200px;position:relative}.models-search .icon{width:16px;height:16px;color:var(--ink-400);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.models-search .input{width:100%;padding-left:36px}.models-toolbar .select{width:auto;min-width:138px}.models-count{white-space:nowrap;color:var(--ink-400);margin-left:auto;font-size:12.5px}.model-group{flex-direction:column;gap:12px;display:flex}.model-group-header{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding-bottom:10px;display:flex}.brand-avatar{background:linear-gradient(135deg, var(--brand-50), #e3f2fb);width:36px;height:36px;color:var(--brand-800);border:1px solid #d7eaf6;border-radius:10px;flex-shrink:0;place-items:center;font-size:15px;font-weight:800;display:grid}.model-group-title{color:var(--ink-900);font-size:18px;line-height:1.2}.model-group-meta{color:var(--ink-400);margin-top:2px;font-size:12px}.model-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-items:stretch;gap:16px;display:grid}.model-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:16px;flex-direction:column;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;overflow:hidden}.model-card:hover{border-color:var(--brand-200);box-shadow:var(--shadow);transform:translateY(-2px)}.model-card-preview{aspect-ratio:675/1200;cursor:pointer;background:#f2f7fb;border:0;width:100%;padding:0;display:block;position:relative;overflow:hidden;container-type:inline-size}.model-card-preview:focus-visible{outline:2px solid var(--brand-700);outline-offset:-2px}.model-card-preview img{object-fit:cover;width:100%;height:100%;transition:transform .2s;display:block}.model-card-preview:hover img{transform:scale(1.015)}.model-card-placeholder{height:100%;color:var(--ink-400);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:12px;display:flex}.model-card-placeholder .icon{width:24px;height:24px}.model-card-text-overlay{pointer-events:none;position:absolute;inset:0}.model-card-text-overlay>span{white-space:nowrap;opacity:.55;align-items:center;line-height:1.05;display:flex;position:absolute;overflow:hidden}.preview-canvas{container-type:inline-size}.text-preview{pointer-events:none;white-space:nowrap;opacity:.55;align-items:center;padding:0 2px;line-height:1.05;display:flex;position:absolute;inset:0;overflow:hidden}.model-card-flag{color:#9a5b00;background:#fff7e6f5;border:1px solid #f5d9a8;border-radius:999px;align-items:center;height:22px;padding:0 8px;font-size:10.5px;font-weight:700;display:inline-flex;position:absolute;top:10px;left:10px}.model-card--sin-productos{border-color:var(--danger-600)}.model-card--sin-productos .model-card-preview{box-shadow:inset 0 0 0 1px var(--danger-600)}.model-card-flag--danger{border-color:var(--danger-600);background:var(--danger-50);color:var(--danger-700)}.model-card-body{flex-direction:column;flex:1;gap:8px;padding:12px 13px 13px;display:flex}.model-card-title{min-height:36px;color:var(--ink-900);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;font-weight:700;line-height:1.3;display:-webkit-box;overflow:hidden}.model-card-meta{color:var(--ink-400);flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.model-card-meta span{align-items:center;gap:4px;display:inline-flex}.model-card-meta .icon{width:14px;height:14px}.model-card-footer{align-items:center;margin-top:auto;padding-top:4px;display:flex}.model-card-footer .btn{width:100%}.render-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px;display:grid}.render-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:14px;overflow:hidden}.render-card-image{aspect-ratio:675/1200;background:#f1f5f9;display:block;overflow:hidden}.render-card-image img{object-fit:cover;width:100%;height:100%}.render-card-body{padding:11px 12px 13px}.render-card-code{font-family:var(--mono);color:var(--brand-800);font-size:11.5px;font-weight:700}.render-card-title{color:var(--ink-600);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12px;overflow:hidden}.render-card-meta{color:var(--ink-400);justify-content:space-between;align-items:center;margin-top:8px;font-size:11.5px;display:flex}.job-strip{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;display:flex}.job-metrics{flex-wrap:wrap;gap:18px;display:flex}.job-metric{flex-direction:column;gap:1px;display:flex}.job-metric strong{color:var(--ink-900);font-size:18px}.job-metric span{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-400);font-size:11px;font-weight:600}.login-page{background:radial-gradient(900px 500px at 85% -10%, #80b8e859, transparent 60%), radial-gradient(700px 400px at 0% 100%, #0058881f, transparent 60%), var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--line);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:22px;padding:32px}.login-logo{width:150px;height:auto;margin:0 auto 6px;display:block}.login-sub{text-align:center;color:var(--ink-500);margin-bottom:24px;font-size:12.5px}.login-form{flex-direction:column;gap:14px;display:flex}.login-hint{background:var(--brand-50);color:var(--brand-800);text-align:center;border-radius:10px;margin-top:18px;padding:10px 12px;font-size:12px}@media (width<=1000px){.ficha-layout{grid-template-columns:1fr}.preview-card{position:static}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.app-shell{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--line);width:100%;height:auto;padding:14px 16px;position:static}.sidebar-brand{padding-bottom:12px}.sidebar-nav{flex-direction:row;overflow-x:auto}.nav-item{white-space:nowrap}.sidebar-footer{display:none}.app-main{padding:20px 16px 40px}.page-header{flex-direction:column}.stats-grid,.grid-2{grid-template-columns:1fr}.models-toolbar{align-items:stretch}.models-search{flex:100%}.models-count{margin-left:0}.model-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}body{margin:0}.app-loading{height:100vh;color:var(--ink-500);justify-content:center;align-items:center;gap:10px;font-size:14px;display:flex}
