:root{
  --primary:#2563eb; --primary-dark:#1d4ed8;
  --bg:#f8fafc; --surface:#fff; --surface2:#f1f5f9;
  --text:#0f172a; --text2:#475569; --muted:#94a3b8;
  --border:#e2e8f0; --shadow:0 1px 3px rgba(0,0,0,.05),0 4px 12px rgba(0,0,0,.04);
  --err:#dc2626;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:var(--muted)}
.small{font-size:.85rem}
.err{color:var(--err);margin:8px 0;font-size:.9rem}

/* Topbar */
.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 24px;display:flex;justify-content:space-between;align-items:center}
.brand{font-weight:700;font-size:1.1rem}

/* Container */
.container{max-width:760px;margin:24px auto;padding:0 16px;display:flex;flex-direction:column;gap:16px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;box-shadow:var(--shadow)}
.card h1{margin:0 0 8px;font-size:1.4rem}
.card h2{margin:0 0 8px;font-size:1rem}
.card ul{margin:6px 0;padding-left:20px;color:var(--text2)}
.card.small h2{margin-bottom:8px}

/* Form */
.filedrop{display:block;margin:18px 0;cursor:pointer}
.filedrop input{display:none}
.dropbox{border:2px dashed var(--border);border-radius:10px;padding:32px;text-align:center;background:var(--surface2);transition:.2s}
.dropbox:hover{border-color:var(--primary);background:#eff6ff}
.drop-icon{font-size:2.4rem;margin-bottom:8px}
.drop-text{color:var(--text2);font-weight:500}

button[type=submit]{background:var(--primary);color:#fff;border:0;border-radius:8px;padding:12px 22px;font-size:1rem;font-weight:600;cursor:pointer;width:100%;transition:.15s}
button[type=submit]:hover{background:var(--primary-dark)}
button[type=submit]:disabled{opacity:.6;cursor:not-allowed}

/* Progress panel */
.progress-panel{margin-top:18px;padding:18px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px}
.progress-panel.hidden{display:none}
.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:600}
.progress-bar{height:14px;background:#dbeafe;border-radius:7px;overflow:hidden;position:relative}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),#3b82f6);width:0%;border-radius:7px;transition:width .35s ease}
.progress-panel .small{margin:8px 0 0;color:var(--text2)}

/* Error panel */
.error-panel{margin-top:18px;padding:14px 18px;background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:10px;font-size:.92rem}
.error-panel.hidden{display:none}

/* Legacy loader (no usado pero por compat) */
.loader.hidden{display:none}

/* Login */
.login-bg{background:linear-gradient(135deg,#dbeafe 0%,#f0f9ff 50%,#fff 100%);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{background:var(--surface);padding:32px;border-radius:14px;box-shadow:0 10px 40px rgba(0,0,0,.1);width:100%;max-width:380px}
.login-card{text-align:center}
.login-card .login-logo-img{display:block;height:90px;width:auto;margin:0 auto 22px}
.login-card form{text-align:left}
.brand-logo{height:28px;width:auto;vertical-align:middle;margin-right:6px}
.brand{display:flex;align-items:center;gap:8px}
.login-card h1{margin:0 0 6px;font-size:1.3rem}
.login-card p{margin:0 0 18px}
.login-card label{display:block;margin-bottom:12px;font-weight:500;font-size:.9rem}
.login-card input{width:100%;margin-top:4px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:.95rem;font-family:inherit;background:var(--surface)}
.login-card input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.login-card button{width:100%;background:var(--primary);color:#fff;border:0;padding:11px;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;margin-top:6px}
.login-card button:hover{background:var(--primary-dark)}

code{background:var(--surface2);padding:1px 5px;border-radius:4px;font-size:.85em;font-family:'JetBrains Mono','SF Mono',monospace}

/* Quota */
.quota-box{margin:14px 0 18px;padding:12px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px}
.quota-row{display:flex;justify-content:space-between;font-size:.92rem;margin-bottom:8px}
.quota-bar{height:8px;background:#dbeafe;border-radius:4px;overflow:hidden}
.quota-fill{height:100%;background:var(--primary);border-radius:4px;transition:width .3s}
.mini-bar{height:5px;background:#dbeafe;border-radius:3px;overflow:hidden;margin-top:4px;width:120px}
.mini-fill{height:100%;background:var(--primary);border-radius:3px}

/* Admin */
.container.wide{max-width:1200px}
.tbl{width:100%;border-collapse:collapse;font-size:.88rem;margin-top:10px}
.tbl th,.tbl td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}
.tbl th{background:var(--surface2);font-weight:600;color:var(--text2)}
.tbl details summary{cursor:pointer;color:var(--primary);font-size:.85rem}
.tbl details[open] summary{margin-bottom:8px}
.row-form{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-top:6px}
.row-form label{display:flex;flex-direction:column;font-size:.85rem;font-weight:500;gap:4px}
.row-form input[type=text],.row-form input[type=number],.row-form input[type=password]{padding:6px 9px;border:1px solid var(--border);border-radius:6px;font-family:inherit;font-size:.9rem;min-width:140px}
.row-form input[type=checkbox]{margin-right:4px}
.row-form button{padding:8px 16px;background:var(--primary);color:#fff;border:0;border-radius:6px;font-weight:600;cursor:pointer}
.row-form button:hover{background:var(--primary-dark)}

.status-queued{color:#a16207;background:#fef3c7;padding:2px 8px;border-radius:4px;font-size:.78rem;font-weight:600}
.status-running{color:#1d4ed8;background:#dbeafe;padding:2px 8px;border-radius:4px;font-size:.78rem;font-weight:600}
.status-saving{color:#7c3aed;background:#ede9fe;padding:2px 8px;border-radius:4px;font-size:.78rem;font-weight:600}
.status-done{color:#15803d;background:#dcfce7;padding:2px 8px;border-radius:4px;font-size:.78rem;font-weight:600}
.status-error{color:#991b1b;background:#fee2e2;padding:2px 8px;border-radius:4px;font-size:.78rem;font-weight:600}
.status-cancelled{color:#6b7280;background:#f3f4f6;padding:2px 8px;border-radius:4px;font-size:.78rem;font-weight:600}

p.ok{padding:10px 14px;background:#dcfce7;color:#15803d;border-radius:8px;margin:0 0 16px}
p.err{padding:10px 14px;background:#fee2e2;color:#991b1b;border-radius:8px;margin:0 0 16px}
