body{margin:0;font-family:system-ui,-apple-system,sans-serif}.login-page{background:#f5f5f5;justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{text-align:center;background:#fff;border-radius:12px;width:100%;max-width:380px;padding:2.5rem 2rem;box-shadow:0 4px 24px #00000014}.login-card h1{color:#1a1a1a;margin:0 0 .25rem;font-size:2rem;font-weight:700}.login-subtitle{color:#666;margin:0 0 2rem;font-size:.95rem}.login-form{text-align:left;flex-direction:column;gap:1rem;display:flex}.login-field{flex-direction:column;gap:.35rem;display:flex}.login-field label{color:#333;font-size:.85rem;font-weight:600}.login-field input{border:1.5px solid #ddd;border-radius:8px;outline:none;padding:.6rem .8rem;font-size:1rem;transition:border-color .2s}.login-field input:focus{border-color:#6c63ff}.login-error{color:#e53e3e;margin:0;font-size:.875rem}.btn-login{color:#fff;cursor:pointer;background:#6c63ff;border:none;border-radius:8px;justify-content:center;align-items:center;min-height:2.75rem;margin-top:.5rem;padding:.75rem;font-size:1rem;font-weight:600;transition:background .2s;display:flex}.btn-login:hover:not(:disabled){background:#574fd6}.btn-login:disabled{opacity:.6;cursor:not-allowed}.spinner{border:2.5px solid #fff6;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.upload-page{background:#f5f5f7;flex-direction:column;align-items:center;min-height:100vh;padding:2rem 1rem;font-family:system-ui,-apple-system,sans-serif;display:flex}.upload-header{text-align:center;margin-bottom:2rem}.upload-header h1{color:#1d1d1f;letter-spacing:-.5px;margin:0 0 .4rem;font-size:2.2rem;font-weight:700}.upload-header p{color:#6e6e73;max-width:480px;margin:0;font-size:1rem}.card{background:#fff;border-radius:18px;flex-direction:column;gap:1.4rem;width:100%;max-width:540px;padding:2rem;display:flex;box-shadow:0 4px 24px #00000014}.drop-zone{cursor:pointer;background:#fafafa;border:2px dashed #c7c7cc;border-radius:14px;padding:2rem;transition:border-color .2s,background .2s}.drop-zone:hover,.drop-zone.dragging{background:#f0f6ff;border-color:#0071e3}.drop-zone.has-file{background:#f5fff8;border-style:solid;border-color:#34c759}.drop-prompt{color:#6e6e73;flex-direction:column;align-items:center;gap:.5rem;display:flex}.drop-icon{font-size:2rem}.drop-prompt p{text-align:center;margin:0;font-size:.95rem}.formats{color:#aeaeb2;font-size:.75rem}.file-info{align-items:center;gap:.9rem;display:flex}.file-icon{flex-shrink:0;font-size:2rem}.file-info>div{flex-direction:column;flex:1;gap:.15rem;display:flex;overflow:hidden}.file-info strong{white-space:nowrap;text-overflow:ellipsis;color:#1d1d1f;font-size:.95rem;overflow:hidden}.file-meta{color:#6e6e73;font-size:.78rem}.btn-remove{color:#aeaeb2;cursor:pointer;background:0 0;border:none;border-radius:50%;padding:.2rem .4rem;font-size:1.1rem;transition:color .15s,background .15s}.btn-remove:hover{color:#ff3b30;background:#fff0f0}.field{flex-direction:column;gap:.5rem;display:flex}.field>label{color:#6e6e73;text-transform:uppercase;letter-spacing:.04em;font-size:.82rem;font-weight:600}.field input[type=text]{color:#1d1d1f;border:1.5px solid #d1d1d6;border-radius:10px;outline:none;padding:.65rem .9rem;font-size:.95rem;transition:border-color .15s}.field input[type=text]:focus{border-color:#0071e3}.ops-grid{flex-wrap:wrap;gap:.5rem;display:flex}.op-chip{color:#3a3a3c;cursor:pointer;-webkit-user-select:none;user-select:none;border:1.5px solid #d1d1d6;border-radius:999px;align-items:center;gap:.4rem;padding:.5rem .85rem;font-size:.88rem;transition:border-color .15s,background .15s,color .15s;display:flex}.op-chip input[type=checkbox]{display:none}.op-chip.selected{color:#0071e3;background:#e8f0fd;border-color:#0071e3;font-weight:500}.op-chip:hover{border-color:#0071e3}.btn-primary{color:#fff;cursor:pointer;background:#0071e3;border:none;border-radius:12px;justify-content:center;align-items:center;gap:.5rem;padding:.85rem 1.5rem;font-size:1rem;font-weight:600;transition:background .2s,opacity .2s;display:flex}.btn-primary:hover:not(:disabled){background:#005bbf}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.spinner{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.error-msg{color:#ff3b30;background:#fff0f0;border-radius:8px;margin:0;padding:.6rem .9rem;font-size:.88rem}.success-card{text-align:center;align-items:center;gap:1rem}.icon-success{color:#fff;background:#34c759;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.8rem;font-weight:700;display:inline-flex}.success-card h2{color:#1d1d1f;margin:0}.success-card p{color:#6e6e73;margin:0}.warn{color:#ff9f0a;background:#fff8ec;border-radius:8px;padding:.5rem .8rem;font-size:.85rem}*,:before,:after{box-sizing:border-box}body{margin:0}.topbar{background:#fff;border-bottom:1px solid #eee;justify-content:flex-end;align-items:center;gap:1rem;padding:.6rem 1.5rem;font-size:.9rem;display:flex}.topbar-user{color:#444;font-weight:500}.btn-logout{cursor:pointer;color:#555;background:0 0;border:1.5px solid #ddd;border-radius:6px;padding:.3rem .75rem;font-size:.85rem;transition:border-color .2s,color .2s}.btn-logout:hover{color:#e53e3e;border-color:#e53e3e}
